sed: improve handling of NULs
This commit is contained in:
@@ -11,8 +11,8 @@
|
||||
|
||||
#include "libbb.h"
|
||||
|
||||
/* This function reads an entire line from a text file,
|
||||
* up to a newline or NUL byte. It returns a malloc'ed char * which must be
|
||||
/* This function reads an entire line from a text file, up to a newline
|
||||
* or NUL byte, inclusive. It returns a malloc'ed char * which must be
|
||||
* stored and free'ed by the caller. If end is null '\n' isn't considered
|
||||
* end of line. If end isn't null, length of the chunk read is stored in it. */
|
||||
|
||||
@@ -25,7 +25,7 @@ char *bb_get_chunk_from_file(FILE * file, int *end)
|
||||
|
||||
while ((ch = getc(file)) != EOF) {
|
||||
/* grow the line buffer as necessary */
|
||||
if (idx > linebufsz - 2) {
|
||||
if (idx >= linebufsz) {
|
||||
linebuf = xrealloc(linebuf, linebufsz += 80);
|
||||
}
|
||||
linebuf[idx++] = (char) ch;
|
||||
@@ -35,14 +35,14 @@ char *bb_get_chunk_from_file(FILE * file, int *end)
|
||||
if (end)
|
||||
*end = idx;
|
||||
if (linebuf) {
|
||||
// huh, is fgets discards prior data on error like this?
|
||||
// huh, does fgets discard prior data on error like this?
|
||||
// I don't think so....
|
||||
//if (ferror(file)) {
|
||||
// free(linebuf);
|
||||
// return NULL;
|
||||
//}
|
||||
linebuf = xrealloc(linebuf, idx+1);
|
||||
linebuf[idx] = 0;
|
||||
linebuf[idx] = '\0';
|
||||
}
|
||||
return linebuf;
|
||||
}
|
||||
|
Reference in New Issue
Block a user