Author: kwilliams
Date: Tue Aug  5 20:12:29 2008
New Revision: 11631

Modified:
   ExtUtils-ParseXS/trunk/Changes
   ExtUtils-ParseXS/trunk/lib/ExtUtils/ParseXS.pm

Log:
Revised croaking patch

Modified: ExtUtils-ParseXS/trunk/Changes
==============================================================================
--- ExtUtils-ParseXS/trunk/Changes      (original)
+++ ExtUtils-ParseXS/trunk/Changes      Tue Aug  5 20:12:29 2008
@@ -1,5 +1,8 @@
 Revision history for Perl extension ExtUtils::ParseXS.
 
+ - Fix the usage reports to consistently report package name as well
+   as sub name across ALIAS, INTERFACE and regular XSUBS. [Robert May]
+
  - Cleaned up a warning with -Wwrite-strings that gets passed into
    every parsed XS file. [Steve Peters]
 

Modified: ExtUtils-ParseXS/trunk/lib/ExtUtils/ParseXS.pm
==============================================================================
--- ExtUtils-ParseXS/trunk/lib/ExtUtils/ParseXS.pm      (original)
+++ ExtUtils-ParseXS/trunk/lib/ExtUtils/ParseXS.pm      Tue Aug  5 20:12:29 2008
@@ -316,12 +316,13 @@
 
   print <<"EOF";
 #ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
-#define PERL_ARGS_ASSERT_CROAK_XS_USAGE        \
-       assert(cv); assert(params)
+#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
 
-/* Copied from universal.c */
-STATIC
-void
+/* prototype to pass -Wmissing-prototypes */
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params);
+
+STATIC void
 S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
 {
     const GV *const gv = CvGV(cv);
@@ -331,7 +332,7 @@
     if (gv) {
         const char *const gvname = GvNAME(gv);
         const HV *const stash = GvSTASH(gv);
-        const char *const hvname = stash ? HvNAME_get(stash) : NULL;
+        const char *const hvname = stash ? HvNAME(stash) : NULL;
 
         if (hvname)
             Perl_croak(aTHX_ "Usage: %s::%s(%s)", hvname, gvname, params);
@@ -639,15 +640,17 @@
 #    *errbuf = '\0';
 EOF
 
-    print Q(<<"EOF") if $cond;
+    if($cond) {
+    print Q(<<"EOF");
 #    if ($cond)
 #       croak_xs_usage(cv,  "$report_args");
 EOF
-    
-     # cv doesn't seem to be used, unless $cond, above
-     print Q(<<"EOF") unless $cond;
+    } else {
+    # cv likely to be unused
+    print Q(<<"EOF");
 #    PERL_UNUSED_VAR(cv); /* -W */
 EOF
+    }
 
     #gcc -Wall: if an xsub has PPCODE is used
     #it is possible none of ST, XSRETURN or XSprePUSH macros are used

Reply via email to