emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 9166d40: Fix etags problems found by static checkin


From: Paul Eggert
Subject: [Emacs-diffs] master 9166d40: Fix etags problems found by static checking
Date: Wed, 31 Aug 2016 17:15:49 +0000 (UTC)

branch: master
commit 9166d4025197d0109015f1c7a77e78dce63d3312
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Fix etags problems found by static checking
    
    * lib-src/etags.c (invalidate_nodes, put_entry):
    Remove now-unnecessary tests for null pointers.  Simplify.
    (put_entries): Rewrite to avoid GCC 6.2 warning about
    dereferencing null pointer.
---
 lib-src/etags.c |   46 ++++++++++++++++++++++------------------------
 1 file changed, 22 insertions(+), 24 deletions(-)

diff --git a/lib-src/etags.c b/lib-src/etags.c
index bf4a8f7..77dcaf0 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -2054,8 +2054,6 @@ free_tree (register node *np)
 
   while (np)
     {
-      register node *node_right;
-
       /* Descent on left children.  */
       while (np->left)
        {
@@ -2063,7 +2061,7 @@ free_tree (register node *np)
          np = np->left;
        }
       /* Free node without left children.  */
-      node_right = np->right;
+      node *node_right = np->right;
       free (np->name);
       free (np->regex);
       free (np);
@@ -2169,12 +2167,11 @@ add_node (node *np, node **cur_node_p)
   else
     {
       /* Ctags Mode */
-      register int dif;
       node **next_node = &cur_node;
 
       while ((cur_node = *next_node) != NULL)
        {
-         dif = strcmp (np->name, cur_node->name);
+         int dif = strcmp (np->name, cur_node->name);
          /*
           * If this tag name matches an existing one, then
           * do not add the node, but maybe print a warning.
@@ -2220,9 +2217,6 @@ invalidate_nodes (fdesc *badfdp, node **npp)
   node *np = *npp;
   stkentry *stack = NULL;
 
-  if (np == NULL)
-    return;
-
   if (CTAGS)
     {
       while (np)
@@ -2240,11 +2234,13 @@ invalidate_nodes (fdesc *badfdp, node **npp)
            {
              /* Pop nodes from stack, invalidating them, until we find one
                 with a right child.  */
-             do {
-               np = pop_node (&stack);
-               if (np && np->fdp == badfdp)
-                 np->valid = false;
-             } while (np && np->right == NULL);
+             while ((np = pop_node (&stack)) != NULL)
+               {
+                 if (np->fdp == badfdp)
+                   np->valid = false;
+                 if (np->right != NULL)
+                   break;
+               }
            }
          /* Process the right child, if any.  */
          if (np)
@@ -2253,10 +2249,10 @@ invalidate_nodes (fdesc *badfdp, node **npp)
     }
   else
     {
-      node super_root, *np_parent;
+      node super_root, *np_parent = NULL;
 
       super_root.left = np;
-      super_root.fdp = (fdesc *)-1;
+      super_root.fdp = (fdesc *) -1;
       np = &super_root;
 
       while (np)
@@ -2273,7 +2269,9 @@ invalidate_nodes (fdesc *badfdp, node **npp)
              np_parent->left = np->left; /* detach subtree from the tree */
              np->left = NULL;            /* isolate it */
              free_tree (np);             /* free it */
-             np = np_parent->left;       /* continue with rest of tree */
+
+             /* Continue with rest of tree.  */
+             np = np_parent ? np_parent->left : NULL;
            }
        }
       *npp = super_root.left;
@@ -2321,13 +2319,13 @@ total_size_of_entries (register node *np)
 }
 
 static void
-put_entry (register node *np)
+put_entry (node *np)
 {
   register char *sp;
   static fdesc *fdp = NULL;
 
   /* Output this entry */
-  if (np && np->valid)
+  if (np->valid)
     {
       if (!CTAGS)
        {
@@ -2394,7 +2392,7 @@ put_entry (register node *np)
 }
 
 static void
-put_entries (register node *np)
+put_entries (node *np)
 {
   stkentry *stack = NULL;
 
@@ -2414,13 +2412,13 @@ put_entries (register node *np)
          /* Output this subentry.  */
          put_entry (np);
          /* Stack subentries that follow this one.  */
-         if (!np->right)
+         while (!np->right)
            {
              /* Output subentries that precede the next one.  */
-             do {
-               np = pop_node (&stack);
-               put_entry (np);
-             } while (np && np->right == NULL);
+             np = pop_node (&stack);
+             if (!np)
+               break;
+             put_entry (np);
            }
          if (np)
            np = np->right;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]