Author: jilles
Date: Wed Dec 28 23:30:17 2011
New Revision: 228941
URL: http://svn.freebsd.org/changeset/base/228941

Log:
  sh: Cache de->d_namlen in a local variable.

Modified:
  head/bin/sh/expand.c

Modified: head/bin/sh/expand.c
==============================================================================
--- head/bin/sh/expand.c        Wed Dec 28 23:26:58 2011        (r228940)
+++ head/bin/sh/expand.c        Wed Dec 28 23:30:17 2011        (r228941)
@@ -1186,6 +1186,7 @@ expmeta(char *enddir, char *name)
        int atend;
        int matchdot;
        int esc;
+       int namlen;
 
        metaflag = 0;
        start = name;
@@ -1284,17 +1285,18 @@ expmeta(char *enddir, char *name)
                if (dp->d_name[0] == '.' && ! matchdot)
                        continue;
                if (patmatch(start, dp->d_name, 0)) {
-                       if (enddir + dp->d_namlen + 1 > expdir_end)
+                       namlen = dp->d_namlen;
+                       if (enddir + namlen + 1 > expdir_end)
                                continue;
-                       memcpy(enddir, dp->d_name, dp->d_namlen + 1);
+                       memcpy(enddir, dp->d_name, namlen + 1);
                        if (atend)
                                addfname(expdir);
                        else {
-                               if (enddir + dp->d_namlen + 2 > expdir_end)
+                               if (enddir + namlen + 2 > expdir_end)
                                        continue;
-                               enddir[dp->d_namlen] = '/';
-                               enddir[dp->d_namlen + 1] = '\0';
-                               expmeta(enddir + dp->d_namlen + 1, endname);
+                               enddir[namlen] = '/';
+                               enddir[namlen + 1] = '\0';
+                               expmeta(enddir + namlen + 1, endname);
                        }
                }
        }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to