ofs += strlen(p);
if (pctx->buf[ofs - 1] == '\n') {
pctx->line++;
- pctx->buf[ofs - 1] = 0;
+ if (ofs >= 2 && pctx->buf[ofs - 2] == '\r')
+ pctx->buf[ofs - 2] = 0;
+ else
+ pctx->buf[ofs - 1] = 0;
return;
}
break;
}
+ UCI_TRAP_SAVE(ctx, done);
file = uci_open_stream(ctx, filename, SEEK_SET, false, false);
ctx->err = 0;
- UCI_TRAP_SAVE(ctx, done);
UCI_INTERNAL(uci_import, ctx, file, name, &package, true);
UCI_TRAP_RESTORE(ctx);
done:
uci_close_stream(file);
- if (ctx->err)
+ if (ctx->err) {
+ free(filename);
UCI_THROW(ctx, ctx->err);
+ }
return package;
}