aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'io.c')
-rw-r--r--io.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/io.c b/io.c
index bece1a56..df79499c 100644
--- a/io.c
+++ b/io.c
@@ -2870,8 +2870,12 @@ scan_data:
while (*bp++ != '\n')
continue;
- if (bp >= iop->dataend) { /* no terminator */
+ if (bp >= iop->dataend) { /* no full terminator */
iop->scanoff = recm->len = bp - iop->off - 1;
+ if (bp == iop->dataend) { /* half a terminator */
+ recm->rt_start = bp - 1;
+ recm->rt_len = 1;
+ }
*state = INDATA;
return NOTERM;
}
@@ -3042,9 +3046,10 @@ get_a_record(char **out, /* pointer to pointer to data */
/* else
leave it alone */
} else if (matchrec == rsnullscan) {
- if (rtval->stlen <= recm.rt_len)
+ if (rtval->stlen >= recm.rt_len) {
rtval->stlen = recm.rt_len;
- else
+ free_wstr(rtval);
+ } else
set_RT(recm.rt_start, recm.rt_len);
} else
set_RT(recm.rt_start, recm.rt_len);