Add $newXS to $self
authorJames E. Keenan <jkeenan@cpan.org>
Sat, 3 Apr 2010 02:39:15 +0000 (22:39 -0400)
committerSteffen Mueller <smueller@cpan.org>
Tue, 12 Jul 2011 18:53:54 +0000 (20:53 +0200)
Keeping fingers crossed!

dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pm

index c31a16c..1d725ae 100644 (file)
@@ -35,10 +35,6 @@ $VERSION = eval $VERSION if $VERSION =~ /_/;
 our (
   $FH, $Package, $func_name, $Full_func_name, $Packid, $pname, $ALIAS, 
 );
-# The scalars in the line below remain (for the time being) 'our' variables
-# because I suspect they will pose the same problems as those in the statement
-# above.
-our ($newXS, );
 
 our $self = {};
 
@@ -886,12 +882,12 @@ EOF
 #
 EOF
 
-    $newXS = "newXS";
+    $self->{newXS} = "newXS";
     $self->{proto} = "";
 
     # Build the prototype string for the xsub
     if ($self->{ProtoThisXSUB}) {
-      $newXS = "newXSproto_portable";
+      $self->{newXS} = "newXSproto_portable";
 
       if ($self->{ProtoThisXSUB} eq 2) {
         # User has specified empty prototype
@@ -919,14 +915,14 @@ EOF
         unless defined $self->{XsubAliases}->{$pname};
       while ( my ($xname, $value) = each %{ $self->{XsubAliases} }) {
         push(@{ $self->{InitFileCode} }, Q(<<"EOF"));
-#        cv = ${newXS}(\"$xname\", XS_$Full_func_name, file$self->{proto});
+#        cv = $self->{newXS}(\"$xname\", XS_$Full_func_name, file$self->{proto});
 #        XSANY.any_i32 = $value;
 EOF
       }
     }
     elsif (@{ $self->{Attributes} }) {
       push(@{ $self->{InitFileCode} }, Q(<<"EOF"));
-#        cv = ${newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});
+#        cv = $self->{newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});
 #        apply_attrs_string("$Package", cv, "@{ $self->{Attributes} }", 0);
 EOF
     }
@@ -934,18 +930,18 @@ EOF
       while ( my ($yname, $value) = each %{ $self->{Interfaces} }) {
         $yname = "$Package\::$yname" unless $yname =~ /::/;
         push(@{ $self->{InitFileCode} }, Q(<<"EOF"));
-#        cv = ${newXS}(\"$yname\", XS_$Full_func_name, file$self->{proto});
+#        cv = $self->{newXS}(\"$yname\", XS_$Full_func_name, file$self->{proto});
 #        $self->{interface_macro_set}(cv,$value);
 EOF
       }
     }
-    elsif($newXS eq 'newXS'){ # work around P5NCI's empty newXS macro
+    elsif($self->{newXS} eq 'newXS'){ # work around P5NCI's empty newXS macro
       push(@{ $self->{InitFileCode} },
-       "        ${newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});\n");
+       "        $self->{newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});\n");
     }
     else {
       push(@{ $self->{InitFileCode} },
-       "        (void)${newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});\n");
+       "        (void)$self->{newXS}(\"$pname\", XS_$Full_func_name, file$self->{proto});\n");
     }
   } # END 'PARAGRAPH' 'while' loop
 
@@ -963,7 +959,7 @@ EOF
     /* Making a sub named "${Package}::()" allows the package */
     /* to be findable via fetchmethod(), and causes */
     /* overload::Overloaded("${Package}") to return true. */
-    (void)${newXS}("${Package}::()", XS_${Packid}_nil, file$self->{proto});
+    (void)$self->{newXS}("${Package}::()", XS_${Packid}_nil, file$self->{proto});
 MAKE_FETCHMETHOD_WORK
   }
 
@@ -1349,7 +1345,7 @@ sub OVERLOAD_handler() {
       $self->{Overload} = 1 unless $self->{Overload};
       my $overload = "$Package\::(".$1;
       push(@{ $self->{InitFileCode} },
-       "        (void)${newXS}(\"$overload\", XS_$Full_func_name, file$self->{proto});\n");
+       "        (void)$self->{newXS}(\"$overload\", XS_$Full_func_name, file$self->{proto});\n");
     }
   }
 }