summaryrefslogtreecommitdiff
path: root/embedvar.h
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2011-10-25 17:56:32 -0700
committerFather Chrysostomos <sprout@cpan.org>2011-10-26 18:22:18 -0700
commitd67594ff366291f164fb41e4dcc791494ec4bb0e (patch)
tree3ec3aa27ad2ba46ff773fe14e6a18e31c4882b07 /embedvar.h
parent1bb8785ab1af03172a3a220f8948d33bdc3dd374 (diff)
downloadperl-d67594ff366291f164fb41e4dcc791494ec4bb0e.tar.gz
Fix CORE::glob
This commit makes CORE::glob bypassing glob overrides. A side effect of the fix is that, with the default glob implementa- tion, undefining *CORE::GLOBAL::glob no longer results in an ‘unde- fined subroutine’ error. Another side effect is that compilation of a glob op no longer assumes that the loading of File::Glob will create the *CORE::GLOB::glob type- glob. ‘++$INC{"File/Glob.pm"}; sub File::Glob::csh_glob; eval '<*>';’ used to crash. This is accomplished using a mechanism similar to lock() and threads::shared. There is a new PL_globhook interpreter varia- ble that pp_glob calls when there is no override present. Thus, File::Glob (which is supposed to be transparent, as it *is* the built-in implementation) no longer interferes with the user mechanism for overriding glob. This removes one tier from the five or so hacks that constitute glob’s implementation, and which work together to make it one of the buggiest and most inconsistent areas of Perl.
Diffstat (limited to 'embedvar.h')
-rw-r--r--embedvar.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/embedvar.h b/embedvar.h
index 3542482c52..f618aefd85 100644
--- a/embedvar.h
+++ b/embedvar.h
@@ -150,6 +150,7 @@
#define PL_gid (vTHX->Igid)
#define PL_glob_index (vTHX->Iglob_index)
#define PL_globalstash (vTHX->Iglobalstash)
+#define PL_globhook (vTHX->Iglobhook)
#define PL_hash_seed (vTHX->Ihash_seed)
#define PL_hintgv (vTHX->Ihintgv)
#define PL_hints (vTHX->Ihints)