Skip Menu |

This queue is for tickets about the Sub-Op CPAN distribution.

Report information
The Basics
Id: 64998
Status: open
Priority: 0/
Queue: Sub-Op

People
Owner: Nobody in particular
Requestors: davem [...] iabyn.com
Cc:
AdminCc:

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



Subject: GvCV and GvGP lvalue changes in perl core
Date: Fri, 21 Jan 2011 16:36:25 +0000
To: bug-Sub-Op [...] rt.cpan.org
From: Dave Mitchell <davem [...] iabyn.com>
Hi, A search of sources on CPAN shows that your module(s) use GvCV() and/or GvGP() in an lvalue context (i.e. you assign to it). From perl 5.13.10 onwards, this will no longer be allowed, and you'll need to update your source code in such a way as to be compatible with both existing and the new perls. Probably the easiest way to do this is to add the following definitions: #ifndef GvCV_set # define GvCV_set(gv,cv) (GvGP(gv)->gp_cv = (cv)) #endif #ifndef GvGP_set # define GvGP_set(gv,gp) ((gv)->sv_u.svu_gp = (gp)) #endif then replace code like the following: GvGP(gv) = gp; GvCV(gv) = cv; with GvGP_set(gv, gp); GvCV_set(gv, cv); If you do something like SAVEGENERICSV(&(GvCV(gv))) then you may need to replace it with a custom SAVEDESTRUCTOR() or similar that does a GvCV_set(gv,old_value) upon restoration.
Subject: Re: [rt.cpan.org #64998] AutoReply: GvCV and GvGP lvalue changes in perl core
Date: Fri, 21 Jan 2011 17:37:08 +0000
To: Bugs in Sub-Op via RT <bug-Sub-Op [...] rt.cpan.org>
From: Dave Mitchell <davem [...] iabyn.com>
On Fri, Jan 21, 2011 at 11:36:33AM -0500, I wrote: Show quoted text
> # define GvCV_set(gv,cv) (GvGP(gv)->gp_cv = (cv))
[snip] Show quoted text
> # define GvGP_set(gv,gp) ((gv)->sv_u.svu_gp = (gp))
Actually on reflection, those could be better written as: #define GvCV_set(gv, cv) (GvCV(gv) = (cv)) #define GvGP_set(gv, gp) (GvGP(gv) = (gp)) -- Indomitable in retreat, invincible in advance, insufferable in victory -- Churchill on Montgomery
Hi Vincent, any plans to fix this incompatibility with 5.14 and up? If not, would you rather have me do it? If that's the case, where does the code live? Best regards, Steffen
Show quoted text
> Hi Vincent, > > any plans to fix this incompatibility with 5.14 and up? If not, would you > rather have me do it? If that's the case, where does the code live? > > Best regards, > Steffen
Hello Steffen, In its current state, this module is pretty useless and would need an extensive API rewrite to stop being so. I believe it would do more harm than good to have it fixed right now, because it could lead people to think that it's usable, while it's not. Vincent.