]> git.ipfire.org Git - thirdparty/tar.git/commitdiff
Fix Savane bug #64581
authorSergey Poznyakoff <gray@gnu.org>
Tue, 22 Aug 2023 15:18:31 +0000 (18:18 +0300)
committerSergey Poznyakoff <gray@gnu.org>
Tue, 22 Aug 2023 15:34:20 +0000 (18:34 +0300)
This reverts commit 4f3824743f50808a0079e6057107de53c4a25f22.

lib/wordsplit.c

index 56837c329a1a89a174ec47502d87864e8a55ac5c..f0c26a9bc463910aaad273ba69156c1d8129392d 100644 (file)
@@ -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->next)
+  while (p && p->next)
     p = p->next;
   return p;
 }
@@ -572,15 +572,15 @@ coalesce_segment (struct wordsplit *wsp, struct wordsplit_node *node)
   size_t len = 0;
   char *buf, *cur;
 
-  for (p = node; p->flags & _WSNF_JOIN; )
+  if (!(node->flags & _WSNF_JOIN))
+    return 0;
+
+  for (p = node; p && (p->flags & _WSNF_JOIN); p = p->next)
     {
       len += wsnode_len (p);
-      p = p->next;
-      if (!p)
-       break;
     }
-  if (p == node)
-    return 0;
+  if (p)
+    len += wsnode_len (p);
   end = p;
 
   buf = malloc (len + 1);