From: Paul Eggert Date: Sun, 19 Sep 2021 14:34:53 +0000 (-0700) Subject: Simplify wordsplit code a bit X-Git-Tag: v1.35~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f3824743f50808a0079e6057107de53c4a25f22;p=thirdparty%2Ftar.git Simplify wordsplit code a bit These changes pacify gcc -Wanalyzer-null-dereference on x86-64 gcc 11.2.1 20210728 (Red Hat 11.2.1-1). * lib/wordsplit.c (wsnode_tail): Remove unnecessary test. (coalesce_segment): Coalesce calls to wsnode_len. --- diff --git a/lib/wordsplit.c b/lib/wordsplit.c index cf8a4990..97d89c9c 100644 --- a/lib/wordsplit.c +++ b/lib/wordsplit.c @@ -472,7 +472,7 @@ wsnode_remove (struct wordsplit *wsp, struct wordsplit_node *node) static struct wordsplit_node * wsnode_tail (struct wordsplit_node *p) { - while (p && p->next) + while (p->next) p = p->next; return p; } @@ -573,15 +573,15 @@ coalesce_segment (struct wordsplit *wsp, struct wordsplit_node *node) char *buf, *cur; int stop; - if (!(node->flags & _WSNF_JOIN)) - return 0; - - for (p = node; p && (p->flags & _WSNF_JOIN); p = p->next) + for (p = node; p->flags & _WSNF_JOIN; ) { len += wsnode_len (p); + p = p->next; + if (!p) + break; } - if (p) - len += wsnode_len (p); + if (p == node) + return 0; end = p; buf = malloc (len + 1);