X-Git-Url: https://git.liburcu.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fargpar-utils%2Fargpar-utils.c;h=fe69a9f58fa91c96740ab1751ad20e7d386f5663;hp=141a1d4813323bb9d8f8a40e4118292524c74672;hb=074060e8e7d729d94e69ced71ed52b4a40c982c2;hpb=9d28679a3d23e2404d42fd9f8abe0002797a6213 diff --git a/src/common/argpar-utils/argpar-utils.c b/src/common/argpar-utils/argpar-utils.c index 141a1d481..fe69a9f58 100644 --- a/src/common/argpar-utils/argpar-utils.c +++ b/src/common/argpar-utils/argpar-utils.c @@ -121,6 +121,7 @@ LTTNG_HIDDEN enum parse_next_item_status parse_next_item(struct argpar_iter *iter, const struct argpar_item **item, int argc_offset, const char **argv, bool unknown_opt_is_error, + const struct argpar_error **error_out, const char *context_fmt, ...) { enum argpar_iter_next_status status; @@ -133,7 +134,7 @@ enum parse_next_item_status parse_next_item(struct argpar_iter *iter, switch (status) { case ARGPAR_ITER_NEXT_STATUS_ERROR_MEMORY: ERR("Failed to get next argpar item."); - ret = PARSE_NEXT_ITEM_STATUS_ERROR; + ret = PARSE_NEXT_ITEM_STATUS_ERROR_MEMORY; break; case ARGPAR_ITER_NEXT_STATUS_ERROR: { @@ -171,6 +172,12 @@ enum parse_next_item_status parse_next_item(struct argpar_iter *iter, abort(); } + if (error_out) { + argpar_error_destroy(*error_out); + *error_out = error; + error = NULL; + } + argpar_error_destroy(error); return ret;