File::Glob::GLOB_ERROR is a real subroutine, not a constant().
authorNicholas Clark <nick@ccl4.org>
Fri, 15 Oct 2010 10:00:27 +0000 (11:00 +0100)
committerNicholas Clark <nick@ccl4.org>
Fri, 15 Oct 2010 10:00:27 +0000 (11:00 +0100)
Previously it was bodged as a constant(), with an explicit wrapper subroutine
in Glob.pm to call each time to get the value.

ext/File-Glob/Glob.pm
ext/File-Glob/Glob.xs
ext/File-Glob/Makefile.PL

index 41584bb..51c36b3 100644 (file)
@@ -94,10 +94,6 @@ sub AUTOLOAD {
 
 XSLoader::load();
 
-sub GLOB_ERROR {
-    return (constant('GLOB_ERROR'))[1];
-}
-
 sub GLOB_CSH () {
     GLOB_BRACE()
        | GLOB_NOMAGIC()
index 59345e7..30e7f82 100644 (file)
@@ -27,6 +27,15 @@ errfunc(const char *foo, int bar) {
 
 MODULE = File::Glob            PACKAGE = File::Glob
 
+int
+GLOB_ERROR()
+    PREINIT:
+       dMY_CXT;
+    CODE:
+       RETVAL = GLOB_ERROR;
+    OUTPUT:
+       RETVAL
+
 BOOT:
 {
     MY_CXT_INIT;
index a0f4e6e..112ea42 100644 (file)
@@ -25,7 +25,6 @@ WriteConstants(
     NAME => 'File::Glob',
     NAMES => [qw(GLOB_ABEND GLOB_ALPHASORT GLOB_ALTDIRFUNC GLOB_BRACE GLOB_ERR
                  GLOB_LIMIT GLOB_MARK GLOB_NOCASE GLOB_NOCHECK GLOB_NOMAGIC
-                 GLOB_NOSORT GLOB_NOSPACE GLOB_QUOTE GLOB_TILDE),
-              {name=>"GLOB_ERROR", macro=>["#ifdef GLOB_ERROR\n\tdMY_CXT;\n\n","#endif\n"]}],
+                 GLOB_NOSORT GLOB_NOSPACE GLOB_QUOTE GLOB_TILDE)],
     BREAKOUT_AT => 8,
 );