Rewrite to allow omitting initialization of global variables.
[kopensolaris-gnu/glibc.git] / misc / tsearch.c
index e372a9e..0cf854b 100644 (file)
@@ -359,8 +359,7 @@ __tdelete (const void *key, void **vrootp, __compar_fn_t compar)
          node **newstack;
          stacksize += 20;
          newstack = alloca (sizeof (node *) * stacksize);
-         memcpy (newstack, nodestack, sp * sizeof (node *));
-         nodestack = newstack;
+         nodestack = memcpy (newstack, nodestack, sp * sizeof (node *));
        }
 
       nodestack[sp++] = rootp;
@@ -398,8 +397,7 @@ __tdelete (const void *key, void **vrootp, __compar_fn_t compar)
              node **newstack;
              stacksize += 20;
              newstack = alloca (sizeof (node *) * stacksize);
-             memcpy (newstack, nodestack, sp * sizeof (node *));
-             nodestack = newstack;
+             nodestack = memcpy (newstack, nodestack, sp * sizeof (node *));
            }
          nodestack[sp++] = parent;
          parent = up;
@@ -593,6 +591,7 @@ weak_alias (__tdelete, tdelete)
    ROOT is the root of the tree to be walked, ACTION the function to be
    called at each node.  LEVEL is the level of ROOT in the whole tree.  */
 static void
+internal_function
 trecurse (const void *vroot, __action_fn_t action, int level)
 {
   node root = (node ) vroot;
@@ -632,6 +631,7 @@ weak_alias (__twalk, twalk)
 /* The standardized functions miss an important functionality: the
    tree cannot be removed easily.  We provide a function to do this.  */
 static void
+internal_function
 tdestroy_recurse (node root, __free_fn_t freefct)
 {
   if (root->left != NULL)