#include "uci_internal.h"
#define LINEBUF 32
-#define LINEBUF_MAX 4096
/*
* Fetch a new line from the input stream and resize buffer if necessary
return;
}
- if (pctx->bufsz > LINEBUF_MAX/2)
- uci_parse_error(ctx, "line too long");
-
pctx->bufsz *= 2;
pctx->buf = uci_realloc(ctx, pctx->buf, pctx->bufsz);
+ if (!pctx->buf)
+ UCI_THROW(ctx, UCI_ERR_MEM);
} while (1);
}
uci_alloc_parse_context(ctx);
ctx->pctx->file = stream;
- if (!*str)
+ if (!*str) {
+ ctx->pctx->pos = 0;
uci_getln(ctx, 0);
+ }
- /*FIXME do we need to skip empty lines? */
ofs_result = next_arg(ctx, false, false, false);
*result = pctx_str(ctx->pctx, ofs_result);
*str = pctx_cur_str(ctx->pctx);