Unified · Split
| @@ -1,3 +1,5 @@ | ||
| 1 | +20070814 | |
| 2 | + bufio.b didn't update the buffer pointers correctly on write errors | |
| 1 | 3 | 20070807 |
| 2 | 4 | libinterp/keyring.c don't include owner= if owner is nil or "" |
| 3 | 5 | add auth/rsagen |
| @@ -88,17 +88,16 @@ readchunk(b: ref Iobuf): int · 87 unmodified lines | ||
| 88 | 88 | |
| 89 | 89 | writechunk(b: ref Iobuf): int |
| 90 | 90 | { |
| 91 | − if (b.fd == nil) | |
| 92 | − return ERROR; | |
| 91 | + err := (b.fd == nil); | |
| 93 | 92 | if (b.filpos != b.bufpos) { |
| 94 | 93 | if (sys->seek(b.fd, b.bufpos, 0) != b.bufpos) |
| 95 | − return ERROR; | |
| 94 | + err = 1; | |
| 96 | 95 | b.filpos = b.bufpos; |
| 97 | 96 | } |
| 98 | 97 | if ((size := b.size) > Bufsize) |
| 99 | 98 | size = Bufsize; |
| 100 | 99 | if (sys->write(b.fd, b.buffer, size) != size) |
| 101 | − return ERROR; | |
| 100 | + err = 1; | |
| 102 | 101 | b.filpos += big size; |
| 103 | 102 | b.size -= size; |
| 104 | 103 | if (b.size) { |
| @@ -108,6 +107,8 @@ writechunk(b: ref Iobuf): int · 3 unmodified lines | ||
| 108 | 107 | b.dirty = 0; |
| 109 | 108 | b.bufpos += big size; |
| 110 | 109 | b.index -= size; |
| 110 | + if(err) | |
| 111 | + return ERROR; | |
| 111 | 112 | return size; |
| 112 | 113 | } |
| 113 | 114 | |
| @@ -295,7 +296,7 @@ Iobuf.ungetc(b: self ref Iobuf): int · 181 unmodified lines | ||
| 295 | 296 | stop = 0; |
| 296 | 297 | buf := b.buffer[0:b.size]; |
| 297 | 298 | for(i := b.index-1; i >= stop; i--){ |
| 298 | − (r, n, s) := sys->byte2char(buf, i); | |
| 299 | + (nil, n, s) := sys->byte2char(buf, i); | |
| 299 | 300 | if(s && i + n == b.index){ |
| 300 | 301 | b.index = i; |
| 301 | 302 | return 1; |
Binary file not shown.
| @@ -1 +1 @@ | ||
| 1 | −#define VERSION "Fourth Edition (20070807)" | |
| 1 | +#define VERSION "Fourth Edition (20070814)" | |