Date: Wed, 28 Dec 2011 23:30:17 +0000 (UTC) From: Jilles Tjoelker <jilles@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r228941 - head/bin/sh Message-ID: <201112282330.pBSNUHxI029635@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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); } } }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201112282330.pBSNUHxI029635>