rsys

Basic data structures and low-level features
git clone git://git.meso-star.fr/rsys.git
Log | Files | Refs | README | LICENSE

commit ce14eacb88bea26267e8ddd2bb3ce0708607925f
parent d6d02e8f7ea609c6d07b301d409231af979c3477
Author: vaplv <vaplv@free.fr>
Date:   Wed, 15 Jan 2020 15:23:59 +0100

Fix the txtrdr_read_line function

When reaching the EOF, an error might be reported while it shouldn't.

Diffstat:
Msrc/test_text_reader.c | 8++++++++
Msrc/text_reader.c | 2+-
2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/test_text_reader.c b/src/test_text_reader.c @@ -101,6 +101,14 @@ main(int argc, char** argv) check_text_reader(txtrdr); txtrdr_ref_put(txtrdr); + CHK(stream = freopen(filename, "w+", stream)); + fprintf(stream, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + fprintf(stream, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); + rewind(stream); + CHK(txtrdr_stream(&allocator, stream, filename, -1, &txtrdr) == RES_OK); + CHK(txtrdr_read_line(txtrdr) == RES_OK); + txtrdr_ref_put(txtrdr); + fclose(stream); check_memory_allocator(&allocator); mem_shutdown_proxy_allocator(&allocator); diff --git a/src/text_reader.c b/src/text_reader.c @@ -178,7 +178,7 @@ txtrdr_read_line(struct txtrdr* txtrdr) /* Read the remaing chars */ more = darray_char_data_get(&txtrdr->line) + sz-1/*null char*/; str = fgets(more, CHUNK+1/*previous null char*/, txtrdr->stream); - if(!str) { + if(!str && ferror(txtrdr->stream)) { res = RES_IO_ERR; goto error; }