diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2021-09-19 07:34:53 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2021-09-19 07:36:36 -0700 |
commit | 4f3824743f50808a0079e6057107de53c4a25f22 (patch) | |
tree | f27a91924f8f28dfac96f51d50016b43a0d9320a | |
parent | c5b86d7672fae5e565c657ef78b0339e73180596 (diff) | |
download | tar-4f3824743f50808a0079e6057107de53c4a25f22.tar.gz |
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.
-rw-r--r-- | lib/wordsplit.c | 14 |
1 files changed, 7 insertions, 7 deletions
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); |