From 339bc176252541a0b135970981d603d9e8820cd7 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Fri, 14 Jul 2017 15:20:07 -0700 Subject: [PATCH] libkvs/watch: match va_start/va_end on error Fix cppcheck error: [src/common/libkvs/kvs_watch.c:109]: (error) Memory leak: ctx [src/common/libkvs/kvs_watch.c:363]: (error) va_list 'ap' was opened but not closed by va_end(). [src/common/libkvs/kvs_watch.c:429]: (error) va_list 'ap' was opened but not closed by va_end(). --- src/common/libkvs/kvs_watch.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/common/libkvs/kvs_watch.c b/src/common/libkvs/kvs_watch.c index a5cc001c436b..e90aaf26b7e5 100644 --- a/src/common/libkvs/kvs_watch.c +++ b/src/common/libkvs/kvs_watch.c @@ -358,11 +358,12 @@ int kvs_watch_once_dir (flux_t *h, kvsdir_t **dirp, const char *fmt, ...) int rc; va_start (ap, fmt); - if (vasprintf (&key, fmt, ap) < 0) { + rc = vasprintf (&key, fmt, ap); + va_end (ap); + if (rc < 0) { errno = ENOMEM; return -1; } - va_end (ap); rc = watch_once_dir (h, key, dirp); free (key); return rc; @@ -424,11 +425,12 @@ int kvs_watch_dir (flux_t *h, kvs_set_dir_f set, void *arg, int rc; va_start (ap, fmt); - if (vasprintf (&key, fmt, ap) < 0) { + rc = vasprintf (&key, fmt, ap); + va_end (ap); + if (rc < ) { errno = ENOMEM; return -1; } - va_end (ap); rc = watch_dir (h, key, set, arg); free (key); return rc;