diff options
Diffstat (limited to 'xs_io.h')
| -rw-r--r-- | xs_io.h | 7 |
1 files changed, 3 insertions, 4 deletions
| @@ -14,7 +14,7 @@ xs_val *xs_readall(FILE *f); | |||
| 14 | xs_str *xs_readline(FILE *f) | 14 | xs_str *xs_readline(FILE *f) |
| 15 | /* reads a line from a file */ | 15 | /* reads a line from a file */ |
| 16 | { | 16 | { |
| 17 | xs_str *s = NULL; | 17 | xs_str *s = xs_str_new(NULL); |
| 18 | 18 | ||
| 19 | errno = 0; | 19 | errno = 0; |
| 20 | 20 | ||
| @@ -22,12 +22,11 @@ xs_str *xs_readline(FILE *f) | |||
| 22 | if (!feof(f)) { | 22 | if (!feof(f)) { |
| 23 | int c; | 23 | int c; |
| 24 | 24 | ||
| 25 | s = xs_str_new(NULL); | ||
| 26 | |||
| 27 | while ((c = fgetc(f)) != EOF) { | 25 | while ((c = fgetc(f)) != EOF) { |
| 28 | unsigned char rc = c; | 26 | unsigned char rc = c; |
| 29 | 27 | ||
| 30 | s = xs_append_m(s, (char *)&rc, 1); | 28 | if (xs_is_string((char *)&rc)) |
| 29 | s = xs_append_m(s, (char *)&rc, 1); | ||
| 31 | 30 | ||
| 32 | if (c == '\n') | 31 | if (c == '\n') |
| 33 | break; | 32 | break; |