pctx->buf = uci_malloc(ctx, LINEBUF);
pctx->bufsz = LINEBUF;
}
- /* `offset' may off by one */
- if (offset >= pctx->bufsz) {
+ /* It takes 2 slots for fgets to read 1 char. */
+ if (offset >= pctx->bufsz - 1) {
pctx->bufsz *= 2;
pctx->buf = uci_realloc(ctx, pctx->buf, pctx->bufsz);
}
break;
}
}
- uci_parse_error(ctx, "unterminated \"");
}
/*
/* Multi-line str value */
uci_getln(ctx, pctx->pos);
if (!pctx_cur_char(pctx))
- uci_parse_error(ctx, "EOF with unterminated \"");
+ uci_parse_error(ctx, "EOF with unterminated '");
break;
default:
addc(ctx, target, &pctx->pos);
}
}
- uci_parse_error(ctx, "unterminated '");
}
/*
uci_alloc_parse_context(ctx);
ctx->pctx->file = stream;
-
- if (!*str) {
+ if (!*str)
uci_getln(ctx, 0);
- *str = ctx->pctx->buf;
- } else {
- UCI_ASSERT(ctx, ctx->pctx->pos == *str - ctx->pctx->buf);
- }
/*FIXME do we need to skip empty lines? */
ofs_result = next_arg(ctx, false, false);