Skip Menu |

This queue is for tickets about the version CPAN distribution.

Report information
The Basics
Id: 92721
Status: resolved
Priority: 0/
Queue: version

People
Owner: Nobody in particular
Requestors: fraserbn [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: [PATCH] vutil.c, vxs.inc: Avoid warnings from -Wmissing-prototypes -Wundef -Wunused-label
I wrote this patch against blead; hopefully that won't be an issue! -Wmissing-prototypes was complaining about declaring XS() functions without previously declaring a prototype. -Wundef didn't like using #if foo instead of #ifdef foo -Wunused-label warned because VER_{IV,NM,PV} were defined on all versions of perl, but only used on < 5.17.2
Subject: 0001-vutil.c-vxs.inc-Avoid-warnings-from-Wmissing-prototy.patch
From ab19759d51cceca320ab8ab747b8feb2debf75fd Mon Sep 17 00:00:00 2001 From: Brian Fraser <fraserbn@gmail.com> Date: Tue, 4 Feb 2014 06:38:55 -0300 Subject: [PATCH] vutil.c, vxs.inc: Avoid warnings from -Wmissing-prototypes -Wundef -Wunused-label -Wmissing-prototypes was complaining about declaring XS() functions without previously declaring a prototype. -Wundef didn't like using #if foo instead of #ifdef foo -Wunused-label warned because VER_{IV,NM,PV} were defined on all versions of perl, but only used on < 5.17.2 --- vutil.c | 24 +++++++++++++++--------- vxs.inc | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/vutil.c b/vutil.c index 4e24e05..200ff73 100644 --- a/vutil.c +++ b/vutil.c @@ -28,7 +28,7 @@ some time when tokenizing. =cut */ const char * -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_prescan_version2(pTHX_ const char *s, bool strict, #else Perl_prescan_version(pTHX_ const char *s, bool strict, @@ -259,7 +259,7 @@ it doesn't. */ const char * -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_scan_version2(pTHX_ const char *s, SV *rv, bool qv) #else Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv) @@ -453,7 +453,7 @@ want to upgrade the SV. */ SV * -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_new_version2(pTHX_ SV *ver) #else Perl_new_version(pTHX_ SV *ver) @@ -543,7 +543,7 @@ to force this SV to be interpreted as an "extended" version. */ SV * -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_upg_version2(pTHX_ SV *ver, bool qv) #else Perl_upg_version(pTHX_ SV *ver, bool qv) @@ -571,13 +571,17 @@ Perl_upg_version(pTHX_ SV *ver, bool qv) "Integer overflow in version %d",VERSION_MAX); } else if ( SvUOK(ver) || SvIOK(ver)) +#if PERL_VERSION_LT(5,17,2) VER_IV: +#endif { version = savesvpv(ver); SAVEFREEPV(version); } else if (SvNOK(ver) && !( SvPOK(ver) && SvCUR(ver) == 3 ) ) +#if PERL_VERSION_LT(5,17,2) VER_NV: +#endif { STRLEN len; @@ -610,7 +614,9 @@ VER_NV: } #endif else if ( SvPOK(ver))/* must be a string or something like a string */ +#if PERL_VERSION_LT(5,17,2) VER_PV: +#endif { STRLEN len; version = savepvn(SvPV(ver,len), SvCUR(ver)); @@ -709,7 +715,7 @@ confused by derived classes which may contain additional hash entries): */ SV * -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_vverify2(pTHX_ SV *vs) #else Perl_vverify(pTHX_ SV *vs) @@ -750,7 +756,7 @@ The SV returned has a refcount of 1. */ SV * -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_vnumify2(pTHX_ SV *vs) #else Perl_vnumify(pTHX_ SV *vs) @@ -844,7 +850,7 @@ The SV returned has a refcount of 1. */ SV * -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_vnormal2(pTHX_ SV *vs) #else Perl_vnormal(pTHX_ SV *vs) @@ -914,7 +920,7 @@ The SV returned has a refcount of 1. */ SV * -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_vstringify2(pTHX_ SV *vs) #else Perl_vstringify(pTHX_ SV *vs) @@ -955,7 +961,7 @@ converted into version objects. */ int -#if VUTIL_REPLACE_CORE +#ifdef VUTIL_REPLACE_CORE Perl_vcmp2(pTHX_ SV *lhv, SV *rhv) #else Perl_vcmp(pTHX_ SV *lhv, SV *rhv) diff --git a/vxs.inc b/vxs.inc index dcf9537..4d74adb 100644 --- a/vxs.inc +++ b/vxs.inc @@ -12,7 +12,7 @@ /* proto member is unused in version, it is used in CORE by non version xsubs */ # define VXSXSDP(x) #endif -#define VXS(name) XS(VXSp(name)) +#define VXS(name) XS(VXSp(name)); XS(VXSp(name)) /* uses PUSHs, so SP must be at start, PUSHs sv on Perl stack, then returns from xsub; this is a little more machine code/tailcall friendly than mPUSHs(foo); -- 1.8.3.2
The CPAN repo is upstream, but I've applied the equivalent patch to it and I'm forwarding your patch to p5p. This will be released in 0.9909 whenever that happens. Thanks! John