diff options
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -398,14 +398,14 @@ int uci_parse_argument(struct uci_context *ctx, FILE *stream, char **str, char * UCI_ASSERT(ctx, str != NULL); UCI_ASSERT(ctx, result != NULL); - if (ctx->pctx) { - if (ctx->pctx->file != stream) { - uci_cleanup(ctx); - } - } else { + if (ctx->pctx && (ctx->pctx->file != stream)) + uci_cleanup(ctx); + + if (!ctx->pctx) uci_alloc_parse_context(ctx); - ctx->pctx->file = stream; - } + + ctx->pctx->file = stream; + if (!*str) { uci_getln(ctx, 0); *str = ctx->pctx->buf; |