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