Skip to content
Snippets Groups Projects
Commit 0dff630a authored by Ian Jackson's avatar Ian Jackson Committed by Niels Möller
Browse files

Old oop-read.h bugfixes from Ian Jackson

Some years ago I contributed a feature for reading lines and records
to liboop: oop-read.h and read.c.  Since it took a while for that
feature to make it into distributed versions, for a long time I've
been using my own copy of the source file.  It seems that I fixed a
couple of bugs in my copy which are still in the Debian package.  I
can't find any record of me having told anyone about them and now I
find that 1.0-6 still has the bugs.

There are two fixes:
 * Initialise "rd->discard" properly
 * Avoid rd->neednotcheck becoming negative
parent 6fafe8f4
No related branches found
No related tags found
No related merge requests found
......@@ -114,6 +114,7 @@ oop_read *oop_rd_new(oop_source *oop, oop_readable *ra, char *buf, size_t bufsz)
rd->allocbuf= 0;
rd->used= 0;
rd->alloc= buf ? bufsz : 0;
rd->discard= 0;
rd->neednotcheck= 0;
rd->displacedchar= -1;
rd->style= *OOP_RD_STYLE_IMMED;
......@@ -235,7 +236,11 @@ static void *on_process(oop_source *oop, oop_read *rd, int try_read) {
if (rd->discard) {
rd->used -= rd->discard;
rd->neednotcheck -= rd->discard;
if (rd->neednotcheck > rd->discard) {
rd->neednotcheck -= rd->discard;
} else {
rd->neednotcheck= 0;
}
memmove(buf, buf + rd->discard, rd->used);
rd->discard= 0;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment