diff options
| author | Thomas Schmucker <ts@its1.de> | 2020-06-19 10:37:35 +0200 |
|---|---|---|
| committer | Thomas Schmucker <ts@its1.de> | 2020-06-19 10:37:35 +0200 |
| commit | ed36aabf97f769126ff075e43285a45aa5eec518 (patch) | |
| tree | aaf5b119521bd615b3e029ba1e5d1667ecebd169 | |
| parent | 878793e5f1952a7e208689264bade2c1a5e0a29d (diff) | |
| download | libcsv-ed36aabf97f769126ff075e43285a45aa5eec518.tar.gz libcsv-ed36aabf97f769126ff075e43285a45aa5eec518.tar.bz2 libcsv-ed36aabf97f769126ff075e43285a45aa5eec518.zip | |
mehr Fehlerbehandlung...
| -rw-r--r-- | csv.c | 13 |
1 files changed, 13 insertions, 0 deletions
| @@ -255,6 +255,15 @@ csv_read(csv_t *csv, FILE *in) | |||
| 255 | assert(csv != NULL); | 255 | assert(csv != NULL); |
| 256 | assert(in != NULL); | 256 | assert(in != NULL); |
| 257 | 257 | ||
| 258 | /* do not try to read if EOF has already been seen */ | ||
| 259 | if ( feof(in) ) { | ||
| 260 | return -1; | ||
| 261 | } | ||
| 262 | |||
| 263 | if ( ferror(in) ) { | ||
| 264 | csv_fatal_error("I/O error", csv->csv_options); | ||
| 265 | } | ||
| 266 | |||
| 258 | enum { | 267 | enum { |
| 259 | STATE_START_FIELD, | 268 | STATE_START_FIELD, |
| 260 | STATE_QUOTED_FIELD, | 269 | STATE_QUOTED_FIELD, |
| @@ -376,6 +385,10 @@ csv_read(csv_t *csv, FILE *in) | |||
| 376 | return csv->csv_field.pos; | 385 | return csv->csv_field.pos; |
| 377 | 386 | ||
| 378 | case STATE_END_FILE: | 387 | case STATE_END_FILE: |
| 388 | if ( ferror(in) ) { | ||
| 389 | csv_fatal_error("I/O error", csv->csv_options); | ||
| 390 | } | ||
| 391 | |||
| 379 | if ( csv_string_empty(&csv->csv_string) ) { | 392 | if ( csv_string_empty(&csv->csv_string) ) { |
| 380 | return -1; /* EOF reached */ | 393 | return -1; /* EOF reached */ |
| 381 | } | 394 | } |
