summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2021-09-19 07:34:53 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2021-09-19 07:36:36 -0700
commit4f3824743f50808a0079e6057107de53c4a25f22 (patch)
treef27a91924f8f28dfac96f51d50016b43a0d9320a
parentc5b86d7672fae5e565c657ef78b0339e73180596 (diff)
downloadtar-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.c14
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);