r69829 - in /branches/upstream/libdata-alias-perl/current: Alias.xs Changes META.yml README lib/Data/Alias.pm

jawnsy-guest at users.alioth.debian.org jawnsy-guest at users.alioth.debian.org
Sun Feb 27 03:11:18 UTC 2011


Author: jawnsy-guest
Date: Sun Feb 27 03:10:49 2011
New Revision: 69829

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=69829
Log:
[svn-upgrade] new version libdata-alias-perl (1.12)

Modified:
    branches/upstream/libdata-alias-perl/current/Alias.xs
    branches/upstream/libdata-alias-perl/current/Changes
    branches/upstream/libdata-alias-perl/current/META.yml
    branches/upstream/libdata-alias-perl/current/README
    branches/upstream/libdata-alias-perl/current/lib/Data/Alias.pm

Modified: branches/upstream/libdata-alias-perl/current/Alias.xs
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-alias-perl/current/Alias.xs?rev=69829&op=diff
==============================================================================
--- branches/upstream/libdata-alias-perl/current/Alias.xs (original)
+++ branches/upstream/libdata-alias-perl/current/Alias.xs Sun Feb 27 03:10:49 2011
@@ -86,6 +86,13 @@
 #endif
 #ifndef SvREFCNT_inc_simple_void_NN
 #define SvREFCNT_inc_simple_void_NN SvREFCNT_inc_simple_NN
+#endif
+
+#ifndef GvGP_set
+#define GvGP_set(gv, val) (GvGP(gv) = val)
+#endif
+#ifndef GvCV_set
+#define GvCV_set(gv, val) (GvCV(gv) = val)
 #endif
 
 #if (PERL_COMBI_VERSION >= 5009003)
@@ -293,6 +300,13 @@
 		}							\
 	} STMT_END
 
+STATIC void da_restore_gvcv(pTHX_ GV *gv) {
+	CV *restcv = (CV *) SSPOPPTR;
+	CV *oldcv = GvCV(gv);
+	GvCV_set(gv, restcv);
+	SvREFCNT_dec(oldcv);
+	SvREFCNT_dec((SV *) gv);
+}
 
 STATIC void da_alias(pTHX_ SV *a1, SV *a2, SV *value) {
 	PREP_ALIAS_INC(value);
@@ -329,19 +343,35 @@
 			Perl_croak(aTHX_ PL_no_modify);
 #endif
 		switch (SvTYPE(value)) {
-			CV *cv;
+			CV *oldcv;
 		case SVt_PVCV:
-			svp = (SV **) &GvCV(gv);
-			cv = (CV *) *svp;
-			if (cv == (CV *) value)
-				break;
-			if (GvCVGEN(gv)) {
-				GvCV(gv) = NULL;
-				GvCVGEN(gv) = 0;
-				SvREFCNT_dec(cv);
+			oldcv = GvCV(gv);
+			if (oldcv != (CV *) value) {
+				if (GvCVGEN(gv)) {
+					GvCV_set(gv, NULL);
+					GvCVGEN(gv) = 0;
+					SvREFCNT_dec((SV *) oldcv);
+					oldcv = NULL;
+				}
+				PL_sub_generation++;
 			}
-			PL_sub_generation++;
-			break;
+			GvMULTI_on(gv);
+			if (GvINTRO(gv)) {
+				GvINTRO_off(gv);
+				SSCHECK(4);
+				SSPUSHPTR((SV *) oldcv);
+				SSPUSHDXPTR((void (*)(pTHX_ void *))
+					da_restore_gvcv);
+				SSPUSHPTR(SvREFCNT_inc_simple_NN((SV *) gv));
+				SSPUSHINT(SAVEt_DESTRUCTOR_X);
+				GvCV_set(gv,
+					(CV *) SvREFCNT_inc_simple_NN(value));
+			} else {
+				GvCV_set(gv,
+					(CV *) SvREFCNT_inc_simple_NN(value));
+				SvREFCNT_dec((SV *) oldcv);
+			}
+			return;
 		case SVt_PVAV:	svp = (SV **) &GvAV(gv); break;
 		case SVt_PVHV:	svp = (SV **) &GvHV(gv); break;
 		case SVt_PVFM:	svp = (SV **) &GvFORM(gv); break;
@@ -397,7 +427,7 @@
 		SV *gv = newSV(0);
 		sv_upgrade(gv, SVt_PVGV);
 		SvSCREAM_on(gv);
-		GvGP(gv) = gp;
+		GvGP_set(gv, gp);
 		sv_free(gv);
 	}
 }

Modified: branches/upstream/libdata-alias-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-alias-perl/current/Changes?rev=69829&op=diff
==============================================================================
--- branches/upstream/libdata-alias-perl/current/Changes (original)
+++ branches/upstream/libdata-alias-perl/current/Changes Sun Feb 27 03:10:49 2011
@@ -1,4 +1,8 @@
 Revision history for Perl extension Data::Alias
+
+1.12  Tue Feb 22 20:47 GMT 2011
+	- Updated to work with Perl version 5.13.10, where GvGP() and
+	  GvCV() are not directly-assignable lvalues
 
 1.11  Thu Jan 13 20:23 GMT 2011
 	- Don't rely on details of core's pp_* functions to determine

Modified: branches/upstream/libdata-alias-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-alias-perl/current/META.yml?rev=69829&op=diff
==============================================================================
--- branches/upstream/libdata-alias-perl/current/META.yml (original)
+++ branches/upstream/libdata-alias-perl/current/META.yml Sun Feb 27 03:10:49 2011
@@ -16,4 +16,4 @@
     - t
 requires: 
   perl: 5.8.1
-version: 1.11
+version: 1.12

Modified: branches/upstream/libdata-alias-perl/current/README
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-alias-perl/current/README?rev=69829&op=diff
==============================================================================
--- branches/upstream/libdata-alias-perl/current/README (original)
+++ branches/upstream/libdata-alias-perl/current/README Sun Feb 27 03:10:49 2011
@@ -1,4 +1,4 @@
-Data::Alias 1.11 - Comprehensive set of aliasing operations
+Data::Alias 1.12 - Comprehensive set of aliasing operations
 
 
 System requirements:

Modified: branches/upstream/libdata-alias-perl/current/lib/Data/Alias.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libdata-alias-perl/current/lib/Data/Alias.pm?rev=69829&op=diff
==============================================================================
--- branches/upstream/libdata-alias-perl/current/lib/Data/Alias.pm (original)
+++ branches/upstream/libdata-alias-perl/current/lib/Data/Alias.pm Sun Feb 27 03:10:49 2011
@@ -5,7 +5,7 @@
 use strict;
 use warnings;
 
-our $VERSION = '1.11';
+our $VERSION = '1.12';
 
 use base 'Exporter';
 use base 'DynaLoader';




More information about the Pkg-perl-cvs-commits mailing list