aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2023-02-07 09:24:21 +0100
committerFabian Groffen <grobian@gentoo.org>2023-02-07 09:24:21 +0100
commit067af6b9098858e786e71ef20cb91ad75c6e4ba4 (patch)
treee619fe97120b66558c0d312a68750ddbd05e3510
parentset: ensure NULL is empty behaviour is retained throughout (diff)
downloadportage-utils-067af6b9098858e786e71ef20cb91ad75c6e4ba4.tar.gz
portage-utils-067af6b9098858e786e71ef20cb91ad75c6e4ba4.tar.bz2
portage-utils-067af6b9098858e786e71ef20cb91ad75c6e4ba4.zip
set: try to silence Coverity
Now add_set_value can allocate a new set, Coverity thinks this will actually happen, despite in these cases the input set not being NULL. Help Coverity by adding a redundant if. Signed-off-by: Fabian Groffen <grobian@gentoo.org>
-rw-r--r--libq/tree.c3
-rw-r--r--main.c12
2 files changed, 11 insertions, 4 deletions
diff --git a/libq/tree.c b/libq/tree.c
index a05a86e2..f308c8d7 100644
--- a/libq/tree.c
+++ b/libq/tree.c
@@ -1709,7 +1709,8 @@ tree_match_atom_cache_populate_cb(tree_pkg_ctx *ctx, void *priv)
cat_ctx = get_set(atom->CATEGORY, cache);
if (cat_ctx == NULL) {
cat_ctx = tree_open_cat(tctx, ".");
- cache = add_set_value(atom->CATEGORY, cat_ctx, NULL, cache);
+ if (cache != NULL) /* for static code analysers */
+ add_set_value(atom->CATEGORY, cat_ctx, NULL, cache);
/* get a pointer from the set */
cat_ctx->name = contains_set(atom->CATEGORY, cache);
}
diff --git a/main.c b/main.c
index c5b27fe2..884d6dac 100644
--- a/main.c
+++ b/main.c
@@ -585,9 +585,15 @@ read_portage_file(const char *file, enum portage_file_type type, void *data)
snprintf(npath, sizeof(npath), "%s:%zu:%zu-%zu",
file, line, cbeg, cend);
p = xstrdup(npath);
- masks = add_set_value(buf, p, &e, masks);
- if (e != NULL)
- free(p);
+ /* if not necessary, but do it for static code analysers
+ * which take into accound that add_set_value might
+ * allocate a new set when masks would be NULL -- a case
+ * which would never happen */
+ if (masks != NULL) {
+ add_set_value(buf, p, &e, masks);
+ if (e != NULL)
+ free(p);
+ }
}
}
}