summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorTony Cook <tony@develop-help.com>2013-09-03 10:17:35 +1000
committerTony Cook <tony@develop-help.com>2013-09-09 15:22:18 +1000
commit41188aa0f6683329a6ebb1811827fce0a096df6e (patch)
tree2a32b38c849f9ad1074e92699426237a5ebc2ed4 /ext
parent788436d2421782aa270928cb9fa6214f251f6797 (diff)
downloadperl-41188aa0f6683329a6ebb1811827fce0a096df6e.tar.gz
[perl #117265] correctly handle overloaded strings
Diffstat (limited to 'ext')
-rw-r--r--ext/File-Glob/Glob.xs11
1 files changed, 6 insertions, 5 deletions
diff --git a/ext/File-Glob/Glob.xs b/ext/File-Glob/Glob.xs
index 43904df434..6189b0fa7a 100644
--- a/ext/File-Glob/Glob.xs
+++ b/ext/File-Glob/Glob.xs
@@ -136,6 +136,12 @@ csh_glob(pTHX_ AV *entries, SV *patsv)
else pat = SvPV_nomg(patsv,len), is_utf8 = !!SvUTF8(patsv);
patend = pat + len;
+ assert(SvTYPE(entries) != SVt_PVAV);
+ sv_upgrade((SV *)entries, SVt_PVAV);
+
+ if (!IS_SAFE_SYSCALL(pat, len, "pattern", "glob"))
+ return FALSE;
+
/* extract patterns */
s = pat-1;
while (++s < patend) {
@@ -225,11 +231,6 @@ csh_glob(pTHX_ AV *entries, SV *patsv)
}
end_of_parsing:
- assert(SvTYPE(entries) != SVt_PVAV);
- sv_upgrade((SV *)entries, SVt_PVAV);
- if (!IS_SAFE_SYSCALL(patsv, "pattern", "glob"))
- return FALSE;
-
if (patav) {
I32 items = AvFILLp(patav) + 1;
SV **svp = AvARRAY(patav);