From 1dd825d80c669db0f5c84470621b99d8da156d65 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 2 Feb 2018 14:34:00 +0100 Subject: [PATCH] basic/hashmap: tweak code to avoid pointless gcc warning MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit gcc says: [196/1142] Compiling C object 'src/basic/basic@sta/hashmap.c.o'. ../src/basic/hashmap.c: In function ‘cachemem_maintain’: ../src/basic/hashmap.c:1913:17: warning: suggest parentheses around assignment used as truth value [-Wparentheses] mem->active = r = true; ^~~ which conflates two things: the first is transitive assignent a = b = c = d; the second is assignment of the value of an expression, which happens to be a an assignment expression here, and boolean. While the second _should_ be parenthesized, the first should _not_, and it's more natural to understand our code as the first, and gcc should treat this as an exception and not emit the warning. But since it's a while until this will be fixed, let's update our code too. --- src/basic/hashmap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/basic/hashmap.c b/src/basic/hashmap.c index 876a10eeb..03ed3b8df 100644 --- a/src/basic/hashmap.c +++ b/src/basic/hashmap.c @@ -1904,8 +1904,6 @@ int set_put_strsplit(Set *s, const char *v, const char *separators, ExtractFlags /* expand the cachemem if needed, return true if newly (re)activated. */ static int cachemem_maintain(CacheMem *mem, unsigned size) { - int r = false; - assert(mem); if (!GREEDY_REALLOC(mem->ptr, mem->n_allocated, size)) { @@ -1913,10 +1911,12 @@ static int cachemem_maintain(CacheMem *mem, unsigned size) { return -ENOMEM; } - if (!mem->active) - mem->active = r = true; + if (!mem->active) { + mem->active = true; + return true; + } - return r; + return false; } int iterated_cache_get(IteratedCache *cache, const void ***res_keys, const void ***res_values, unsigned *res_n_entries) { -- 2.30.2