Hello community,

here is the log from the commit of package perl-Data-Alias for openSUSE:Factory 
checked in at 2011-12-01 12:25:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Data-Alias (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Data-Alias.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Data-Alias", Maintainer is ""

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Data-Alias/perl-Data-Alias.changes  
2011-09-23 12:36:42.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Data-Alias.new/perl-Data-Alias.changes     
2011-12-01 12:25:10.000000000 +0100
@@ -1,0 +2,36 @@
+Tue Nov 29 20:30:24 UTC 2011 - co...@suse.com
+
+version 1.16; 2011-11-17
+
+  * bugfix: use supported API to put destructor calls on the save stack
+    (the unsupported way used before was wrong for 64-bit systems on
+    perl 5.13.1 and later)
+
+  * document the behaviour of "alias return" in more detail
+
+  * convert .cvsignore to .gitignore
+
+-------------------------------------------------------------------
+Tue Nov 29 20:28:20 UTC 2011 - co...@suse.com
+
+- update to 1.14
+  * port to Perl 5.15.0, where the op type aelemfast has been split into
+    aelemfast and aelemfast_lex
+  * test compatibility with Devel::CallParser
+  * bugfix: never unhook peephole optimiser, because unhooking is liable
+    to fail if anything else hooked it
+  * bugfix: revise check for dorassign opcode to cope with FreeBSD's
+    mutant Perl 5.8 that has it
+  * test POD syntax and coverage
+  * bugfix: prevent the lexer getting confused if the first thing inside
+    an alias{} block is an open paren
+  * bugfix: don't crash if an rv2cv op is built with PL_parser null
+  * bugfix: handle variant structure of entersub op which lacks (ex-)list
+    op as direct child
+  * bugfix: squash bogus dtrace-related macro definitions that are picked
+    up due to defining PERL_CORE
+  * switch all pp functions to internal linkage
+  * avoid some compiler warnings
+  * include .cvsignore file in distribution
+
+-------------------------------------------------------------------

Old:
----
  Data-Alias-1.12.tar.gz

New:
----
  Data-Alias-1.16.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Data-Alias.spec ++++++
--- /var/tmp/diff_new_pack.kRAhzm/_old  2011-12-01 12:25:11.000000000 +0100
+++ /var/tmp/diff_new_pack.kRAhzm/_new  2011-12-01 12:25:11.000000000 +0100
@@ -18,15 +18,14 @@
 
 
 Name:           perl-Data-Alias
-Version:        1.12
+Version:        1.16
 Release:        1
 License:        GPL+ or Artistic
 %define cpan_name Data-Alias
 Summary:        Comprehensive set of aliasing operations
 Url:            http://search.cpan.org/dist/Data-Alias/
 Group:          Development/Libraries/Perl
-#Source:         
http://www.cpan.org/authors/id/Z/ZE/ZEFRAM/Data-Alias-%{version}.tar.gz
-Source:         %{cpan_name}-%{version}.tar.gz
+Source:         
http://www.cpan.org/authors/id/Z/ZE/ZEFRAM/%{cpan_name}-%{version}.tar.gz
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  perl
 BuildRequires:  perl-macros
@@ -71,11 +70,8 @@
 %perl_process_packlist
 %perl_gen_filelist
 
-%clean
-%{__rm} -rf %{buildroot}
-
 %files -f %{name}.files
-%defattr(644,root,root,755)
+%defattr(-,root,root,755)
 %doc Changes README
 
 %changelog

++++++ Data-Alias-1.12.tar.gz -> Data-Alias-1.16.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/.gitignore 
new/Data-Alias-1.16/.gitignore
--- old/Data-Alias-1.12/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/Data-Alias-1.16/.gitignore      2011-11-17 22:42:27.000000000 +0100
@@ -0,0 +1,8 @@
+/Makefile
+/pm_to_blib
+/blib
+/MYMETA.yml
+/Data-Alias-*
+/Alias.c
+/Alias.o
+/Alias.bs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/Alias.xs new/Data-Alias-1.16/Alias.xs
--- old/Data-Alias-1.12/Alias.xs        2011-02-22 21:41:15.000000000 +0100
+++ new/Data-Alias-1.16/Alias.xs        2011-11-17 22:57:41.000000000 +0100
@@ -25,6 +25,12 @@
                                PERL_SUBVERSION)
 #endif
 
+#if defined(USE_DTRACE) && defined(PERL_CORE)
+#undef ENTRY_PROBE
+#undef RETURN_PROBE
+#define ENTRY_PROBE(func, file, line, stash)
+#define RETURN_PROBE(func, file, line, stash)
+#endif
 
 #if defined(PERL_CORE) && defined(MULTIPLICITY) && \
                (PERL_COMBI_VERSION < 5013006)
@@ -176,7 +182,11 @@
 #endif
 #define SVs_PADFLAGS (SVs_PADBUSY|SVs_PADMY|SVs_PADTMP)
 
+#ifdef pp_dorassign
+#define DA_HAVE_OP_DORASSIGN 1
+#else
 #define DA_HAVE_OP_DORASSIGN (PERL_COMBI_VERSION >= 5009000)
+#endif
 
 #define DA_TIED_ERR "Can't %s alias %s tied %s"
 #define DA_ODD_HASH_ERR "Odd number of elements in hash assignment"
@@ -210,7 +220,6 @@
 #define dDA SV *_da, **_dap
 #define dDAforce SV *_da = *DA_FETCH(FALSE)
 
-#define da_peeps (*(I32 *) &SvCUR(_da))
 #define da_inside (*(I32 *) &SvIVX(_da))
 #define da_iscope (*(PERL_CONTEXT **) &SvPVX(_da))
 #define da_old_peepp (*(void (**)(pTHX_ OP *)) &LvTARG(_da))
@@ -225,7 +234,6 @@
 #define DA_INIT
 
 STATIC CV *da_cv, *da_cvc;
-STATIC I32 da_peeps;
 STATIC I32 da_inside;
 STATIC PERL_CONTEXT *da_iscope;
 STATIC void (*da_old_peepp)(pTHX_ OP *);
@@ -237,7 +245,7 @@
 STATIC OP *da_tag_entersub(pTHX) { return NORMAL; }
 
 STATIC void da_peep(pTHX_ OP *o);
-STATIC int da_peep2(pTHX_ OP *o);
+STATIC void da_peep2(pTHX_ OP *o);
 
 STATIC SV *da_fetch(pTHX_ SV *a1, SV *a2) {
        switch ((Size_t) a1) {
@@ -300,7 +308,8 @@
                }                                                       \
        } STMT_END
 
-STATIC void da_restore_gvcv(pTHX_ GV *gv) {
+STATIC void da_restore_gvcv(pTHX_ void *gv_v) {
+       GV *gv = (GV*)gv_v;
        CV *restcv = (CV *) SSPOPPTR;
        CV *oldcv = GvCV(gv);
        GvCV_set(gv, restcv);
@@ -357,18 +366,16 @@
                        }
                        GvMULTI_on(gv);
                        if (GvINTRO(gv)) {
+                               SvREFCNT_inc_simple_void_NN((SV *) gv);
+                               SvREFCNT_inc_simple_void_NN(value);
                                GvINTRO_off(gv);
-                               SSCHECK(4);
+                               SSCHECK(1);
                                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));
+                               SAVEDESTRUCTOR_X(da_restore_gvcv, (void*)gv);
+                               GvCV_set(gv, (CV*)value);
                        } else {
-                               GvCV_set(gv,
-                                       (CV *) SvREFCNT_inc_simple_NN(value));
+                               SvREFCNT_inc_simple_void_NN(value);
+                               GvCV_set(gv, (CV*)value);
                                SvREFCNT_dec((SV *) oldcv);
                        }
                        return;
@@ -400,7 +407,8 @@
                        return;
                case SVt_PVHV:
                        if (value == &PL_sv_undef) {
-                               hv_delete_ent((HV *) a1, a2, G_DISCARD, 0);
+                               (void) hv_delete_ent((HV *) a1, a2,
+                                       G_DISCARD, 0);
                        } else {
                                if (!hv_store_ent((HV *) a1, a2, value, 0))
                                        SvREFCNT_dec(value);
@@ -414,7 +422,8 @@
        Perl_croak(aTHX_ DA_TARGET_ERR);
 }
 
-STATIC void da_unlocalize_gvar(pTHX_ GP *gp) {
+STATIC void da_unlocalize_gvar(pTHX_ void *gp_v) {
+       GP *gp = (GP*) gp_v;
        SV *value = (SV *) SSPOPPTR;
        SV **sptr = (SV **) SSPOPPTR;
        SV *old = *sptr;
@@ -433,12 +442,10 @@
 }
 
 STATIC void da_localize_gvar(pTHX_ GP *gp, SV **sptr) {
-       SSCHECK(5);
+       SSCHECK(2);
        SSPUSHPTR(sptr);
        SSPUSHPTR(*sptr);
-       SSPUSHDXPTR((void (*)(pTHX_ void *)) da_unlocalize_gvar);
-       SSPUSHPTR(gp);
-       SSPUSHINT(SAVEt_DESTRUCTOR_X);
+       SAVEDESTRUCTOR_X(da_unlocalize_gvar, (void*)gp);
        ++gp->gp_refcnt;
        *sptr = Nullsv;
 }
@@ -454,13 +461,13 @@
        return rv;
 }
 
-OP *DataAlias_pp_srefgen(pTHX) {
+STATIC OP *DataAlias_pp_srefgen(pTHX) {
        dSP;
        SETs(da_refgen(aTHX_ TOPs));
        RETURN;
 }
 
-OP *DataAlias_pp_refgen(pTHX) {
+STATIC OP *DataAlias_pp_refgen(pTHX) {
        dSP; dMARK;
        if (GIMME_V != G_LIST) {
                ++MARK;
@@ -474,7 +481,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_anonlist(pTHX) {
+STATIC OP *DataAlias_pp_anonlist(pTHX) {
        dSP; dMARK;
        I32 i = SP - MARK;
        AV *av = newAV();
@@ -494,7 +501,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_anonhash(pTHX) {
+STATIC OP *DataAlias_pp_anonhash(pTHX) {
        dSP; dMARK; dORIGMARK;
        HV *hv = (HV *) newHV();
        SV *sv;
@@ -507,9 +514,9 @@
                        Perl_warner(aTHX_ packWARN(WARN_MISC),
                                "Odd number of elements in anonymous hash");
                if (val == &PL_sv_undef)
-                       hv_delete_ent(hv, key, G_DISCARD, 0);
+                       (void) hv_delete_ent(hv, key, G_DISCARD, 0);
                else
-                       hv_store_ent(hv, key, val, 0);
+                       (void) hv_store_ent(hv, key, val, 0);
        }
        SP = ORIGMARK;
        if (PL_op->op_flags & OPf_SPECIAL) {
@@ -522,9 +529,14 @@
        RETURN;
 }
 
-OP *DataAlias_pp_aelemfast(pTHX) {
+STATIC OP *DataAlias_pp_aelemfast(pTHX) {
        dSP;
-       AV *av = (PL_op->op_flags & OPf_SPECIAL) ?
+       AV *av =
+#if (PERL_COMBI_VERSION >= 5015000)
+               PL_op->op_type == OP_AELEMFAST_LEX ?
+#else
+               (PL_op->op_flags & OPf_SPECIAL) ?
+#endif
                        (AV *) PAD_SV(PL_op->op_targ) : GvAVn(cGVOP_gv);
        IV index = PL_op->op_private;
        if (!av_fetch(av, index, TRUE))
@@ -543,7 +555,7 @@
        return FALSE;
 }
 
-OP *DataAlias_pp_aelem(pTHX) {
+STATIC OP *DataAlias_pp_aelem(pTHX) {
        dSP;
        SV *elem = POPs, **svp;
        AV *av = (AV *) POPs;
@@ -584,7 +596,7 @@
 }
 #endif
 
-OP *DataAlias_pp_helem(pTHX) {
+STATIC OP *DataAlias_pp_helem(pTHX) {
        dSP;
        SV *key = POPs;
        HV *hv = (HV *) POPs;
@@ -613,7 +625,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_aslice(pTHX) {
+STATIC OP *DataAlias_pp_aslice(pTHX) {
        dSP; dMARK;
        AV *av = (AV *) POPs;
        IV max, count;
@@ -646,7 +658,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_hslice(pTHX) {
+STATIC OP *DataAlias_pp_hslice(pTHX) {
        dSP; dMARK;
        HV *hv = (HV *) POPs;
        SV *key;
@@ -685,7 +697,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_padsv(pTHX) {
+STATIC OP *DataAlias_pp_padsv(pTHX) {
        dSP;
        IV index = PL_op->op_targ;
        if (PL_op->op_private & OPpLVAL_INTRO) {
@@ -696,7 +708,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_padav(pTHX) {
+STATIC OP *DataAlias_pp_padav(pTHX) {
        dSP; dTARGET;
        if (PL_op->op_private & OPpLVAL_INTRO)
                SAVECLEARSV(PAD_SVl(PL_op->op_targ));
@@ -704,7 +716,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_padhv(pTHX) {
+STATIC OP *DataAlias_pp_padhv(pTHX) {
        dSP; dTARGET;
        if (PL_op->op_private & OPpLVAL_INTRO)
                SAVECLEARSV(PAD_SVl(PL_op->op_targ));
@@ -712,7 +724,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_gvsv(pTHX) {
+STATIC OP *DataAlias_pp_gvsv(pTHX) {
        dSP;
        GV *gv = cGVOP_gv;
        if (PL_op->op_private & OPpLVAL_INTRO) {
@@ -723,7 +735,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_gvsv_r(pTHX) {
+STATIC OP *DataAlias_pp_gvsv_r(pTHX) {
        dSP;
        GV *gv = cGVOP_gv;
        if (PL_op->op_private & OPpLVAL_INTRO) {
@@ -743,7 +755,7 @@
        return egv;
 }
 
-OP *DataAlias_pp_rv2sv(pTHX) {
+STATIC OP *DataAlias_pp_rv2sv(pTHX) {
        dSP; dPOPss;
        if (!SvROK(sv) && SvTYPE(sv) != SVt_PVGV) do {
                const char *tname;
@@ -785,7 +797,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_rv2sv_r(pTHX) {
+STATIC OP *DataAlias_pp_rv2sv_r(pTHX) {
        U8 savedflags;
        OP *op = PL_op, *ret;
 
@@ -803,7 +815,7 @@
        return ret;
 }
 
-OP *DataAlias_pp_rv2gv(pTHX) {
+STATIC OP *DataAlias_pp_rv2gv(pTHX) {
        dSP; dPOPss;
        if (SvROK(sv)) {
        wasref: sv = SvRV(sv);
@@ -829,7 +841,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_rv2av(pTHX) {
+STATIC OP *DataAlias_pp_rv2av(pTHX) {
        OP *ret = PL_ppaddr[OP_RV2AV](aTHX);
        dSP;
        SV *av = POPs;
@@ -838,7 +850,7 @@
        return ret;
 }
 
-OP *DataAlias_pp_rv2hv(pTHX) {
+STATIC OP *DataAlias_pp_rv2hv(pTHX) {
        OP *ret = PL_ppaddr[OP_RV2HV](aTHX);
        dSP;
        SV *hv = POPs;
@@ -847,7 +859,7 @@
        return ret;
 }
 
-OP *DataAlias_pp_sassign(pTHX) {
+STATIC OP *DataAlias_pp_sassign(pTHX) {
        dSP;
        SV *a1, *a2, *value;
        if (PL_op->op_private & OPpASSIGN_BACKWARDS) {
@@ -860,7 +872,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_aassign(pTHX) {
+STATIC OP *DataAlias_pp_aassign(pTHX) {
        dSP;
        SV **left, **llast, **right, **rlast;
        I32 gimme = GIMME_V;
@@ -1047,7 +1059,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_andassign(pTHX) {
+STATIC OP *DataAlias_pp_andassign(pTHX) {
        dSP;
        SV *a2 = POPs;
        SV *sv = da_fetch(aTHX_ TOPs, a2);
@@ -1059,7 +1071,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_orassign(pTHX) {
+STATIC OP *DataAlias_pp_orassign(pTHX) {
        dSP;
        SV *a2 = POPs;
        SV *sv = da_fetch(aTHX_ TOPs, a2);
@@ -1072,7 +1084,7 @@
 }
 
 #if DA_HAVE_OP_DORASSIGN
-OP *DataAlias_pp_dorassign(pTHX) {
+STATIC OP *DataAlias_pp_dorassign(pTHX) {
        dSP;
        SV *a2 = POPs;
        SV *sv = da_fetch(aTHX_ TOPs, a2);
@@ -1085,7 +1097,7 @@
 }
 #endif
 
-OP *DataAlias_pp_push(pTHX) {
+STATIC OP *DataAlias_pp_push(pTHX) {
        dSP; dMARK; dORIGMARK; dTARGET;
        AV *av = (AV *) *++MARK;
        I32 i;
@@ -1100,7 +1112,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_unshift(pTHX) {
+STATIC OP *DataAlias_pp_unshift(pTHX) {
        dSP; dMARK; dORIGMARK; dTARGET;
        AV *av = (AV *) *++MARK;
        I32 i = 0;
@@ -1114,7 +1126,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_splice(pTHX) {
+STATIC OP *DataAlias_pp_splice(pTHX) {
        dSP; dMARK; dORIGMARK;
        I32 ins = SP - MARK - 3;
        AV *av = (AV *) MARK[1];
@@ -1168,7 +1180,7 @@
        RETURN;
 }
 
-OP *DataAlias_pp_leave(pTHX) {
+STATIC OP *DataAlias_pp_leave(pTHX) {
        dSP;
        SV **newsp;
        PMOP *newpm;
@@ -1208,7 +1220,7 @@
        return NORMAL;
 }
 
-OP *DataAlias_pp_return(pTHX) {
+STATIC OP *DataAlias_pp_return(pTHX) {
        dSP; dMARK;
        I32 cxix;
        PERL_CONTEXT *cx;
@@ -1284,8 +1296,8 @@
                if (optype == OP_REQUIRE && !SvTRUE(sv)
                                && (gimme == G_SCALAR || MARK == SP)) {
                        sv = cx->blk_eval.old_namesv;
-                       hv_delete(GvHVn(PL_incgv), SvPVX_const(sv), SvCUR(sv),
-                                       G_DISCARD);
+                       (void) hv_delete(GvHVn(PL_incgv), SvPVX_const(sv),
+                                       SvCUR(sv), G_DISCARD);
                        DIE(aTHX_ "%"SVf" did not return a true value", sv);
                }
                break;
@@ -1297,6 +1309,7 @@
                break;
        default:
                DIE(aTHX_ "panic: return");
+               retop = NULL;   /* suppress "uninitialized" warning */
        }
 
        TAINT_NOT;
@@ -1334,34 +1347,28 @@
        return retop;
 }
 
-OP *DataAlias_pp_leavesub(pTHX) {
+STATIC OP *DataAlias_pp_leavesub(pTHX) {
        if (++PL_markstack_ptr == PL_markstack_max)
                markstack_grow();
        *PL_markstack_ptr = cxstack[cxstack_ix].blk_oldsp;
        return DataAlias_pp_return(aTHX);
 }
 
-OP *DataAlias_pp_entereval(pTHX) {
+STATIC OP *DataAlias_pp_entereval(pTHX) {
        dDAforce;
        PERL_CONTEXT *iscope = da_iscope;
        I32 inside = da_inside;
        I32 cxi = (cxstack_ix < cxstack_max) ? cxstack_ix + 1 : cxinc();
-       void (*peepp)(pTHX_ OP *) = PL_peepp;
        OP *ret;
        da_iscope = &cxstack[cxi];
        da_inside = 1;
-       if (peepp != da_peep) {
-               da_old_peepp = peepp;
-               PL_peepp = da_peep;
-       }
        ret = PL_ppaddr[OP_ENTEREVAL](aTHX);
        da_iscope = iscope;
        da_inside = inside;
-       PL_peepp = peepp;
        return ret;
 }
 
-OP *DataAlias_pp_copy(pTHX) {
+STATIC OP *DataAlias_pp_copy(pTHX) {
        dSP; dMARK;
        SV *sv;
        switch (GIMME_V) {
@@ -1397,6 +1404,9 @@
                                                   DA_OUTER_ERR);
                           break;
        case OP_AELEM:     op->op_ppaddr = DataAlias_pp_aelem;     break;
+#if (PERL_COMBI_VERSION >= 5015000)
+       case OP_AELEMFAST_LEX:
+#endif
        case OP_AELEMFAST: op->op_ppaddr = DataAlias_pp_aelemfast; break;
        case OP_HELEM:     op->op_ppaddr = DataAlias_pp_helem;     break;
        case OP_ASLICE:    op->op_ppaddr = DataAlias_pp_aslice;    break;
@@ -1528,10 +1538,7 @@
                                break;
                        case OP_LIST:
                                if (op->op_ppaddr == da_tag_list) {
-                                       if (da_peep2(aTHX_ op)) {
-                                               dDAforce;
-                                               PL_peepp = da_old_peepp;
-                                       }
+                                       da_peep2(aTHX_ op);
                                        return hits;
                                }
                                break;
@@ -1651,14 +1658,13 @@
        return hits;
 }
 
-STATIC int da_peep2(pTHX_ OP *o) {
+STATIC void da_peep2(pTHX_ OP *o) {
        OP *sib, *k;
        int useful;
        while (o->op_ppaddr != da_tag_list) {
                while ((sib = o->op_sibling)) {
                        if ((o->op_flags & OPf_KIDS) && (k = cUNOPo->op_first)){
-                               if (da_peep2(aTHX_ k))
-                                       return 1;
+                               da_peep2(aTHX_ k);
                        } else switch (o->op_type ? o->op_type : o->op_targ) {
                        case_OP_SETSTATE_
                        case OP_NEXTSTATE:
@@ -1668,7 +1674,7 @@
                        o = sib;
                }
                if (!(o->op_flags & OPf_KIDS) || !(o = cUNOPo->op_first))
-                       return 0;
+                       return;
        }
        useful = o->op_private & OPpUSEFUL;
        op_null(o);
@@ -1694,10 +1700,6 @@
                        }
                }
        }
-       {
-               dDAforce;
-               return !--da_peeps;
-       }
 }
 
 STATIC void da_peep(pTHX_ OP *o) {
@@ -1711,8 +1713,8 @@
                        o = tmp;
                if (da_transform(aTHX_ o, FALSE))
                        da_inside = 2;
-       } else if (da_peep2(aTHX_ o)) {
-               PL_peepp = da_old_peepp;
+       } else {
+               da_peep2(aTHX_ o);
        }
        LEAVE;
 }
@@ -1728,14 +1730,18 @@
        char *s, *start_s;
        CV *cv;
        o = da_old_ck_rv2cv(aTHX_ o);
+#if (PERL_COMBI_VERSION >= 5009005)
+       if (!PL_parser)
+               return o;
+#endif
+       if (PL_lex_state != LEX_NORMAL && PL_lex_state != LEX_INTERPNORMAL)
+               return o; /* not lexing? */
        kid = cUNOPo->op_first;
        if (kid->op_type != OP_GV || !DA_ACTIVE || (
                        (cv = GvCV(kGVOP_gv)) != da_cv && cv != da_cvc ))
                return o;
        if (o->op_private & OPpENTERSUB_AMPER)
                return o;
-       if (PL_lex_state != LEX_NORMAL && PL_lex_state != LEX_INTERPNORMAL)
-               return o; /* not lexing? */
        SvPOK_off(cv);
        o->op_ppaddr = da_tag_rv2cv;
        if (cv == da_cv)
@@ -1773,6 +1779,23 @@
                if ((PL_nexttype[PL_nexttoke++] = yylex()) == '{') {
                        PL_nexttype[PL_nexttoke++] = DO;
                        sv_setpv((SV *) cv, "$");
+                       if (PERL_COMBI_VERSION >= 5011002 &&
+                                       *PL_bufptr == '(') {
+                               /*
+                                * A paren here triggers special lexer
+                                * behaviour for a parenthesised argument
+                                * list, which screws up the normal
+                                * parsing that we want to continue.
+                                * Suppress it by injecting a semicolon,
+                                * which is otherwise a no-op coming just
+                                * after the opening brace of a block.
+                                */
+                               Move(PL_bufptr, PL_bufptr+1,
+                                       PL_bufend+1-PL_bufptr, char);
+                               *PL_bufptr = ';';
+                               PL_bufend++;
+                               SvCUR(PL_linestr)++;
+                       }
                }
                if(PL_lex_state != LEX_KNOWNEXT) {
                        PL_lex_defer = PL_lex_state;
@@ -1807,10 +1830,6 @@
                                memset(start_s, ' ', PL_bufptr-start_s);
                }
        }
-       if (!da_peeps++) {
-               da_old_peepp = PL_peepp;
-               PL_peepp = da_peep;
-       }
        if (da_iscope != &cxstack[cxstack_ix]) {
                SAVEVPTR(da_iscope);
                SAVEI32(da_inside);
@@ -1826,9 +1845,12 @@
 STATIC OP *da_ck_entersub(pTHX_ OP *o) {
        dDA;
        OP *kid = cUNOPo->op_first;
-       OP *last = kLISTOP->op_last;
-       OP *tmp;
+       OP *last, *tmp;
        int inside;
+       if (!(kid->op_type == OP_LIST ||
+                       (kid->op_type == OP_NULL && kid->op_targ == OP_LIST)))
+               return da_old_ck_entersub(aTHX_ o);
+       last = kLISTOP->op_last;
        if (!DA_ACTIVE || !(kid->op_flags & OPf_KIDS)
                                || last->op_ppaddr != da_tag_rv2cv)
                return da_old_ck_entersub(aTHX_ o);
@@ -1884,6 +1906,8 @@
                PL_check[OP_ENTERSUB] = da_ck_entersub;
        }
        CvLVALUE_on(get_cv("Data::Alias::deref", TRUE));
+       da_old_peepp = PL_peepp;
+       PL_peepp = da_peep;
        }
 
 void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/Changes new/Data-Alias-1.16/Changes
--- old/Data-Alias-1.12/Changes 2011-02-22 21:47:02.000000000 +0100
+++ new/Data-Alias-1.16/Changes 2011-11-17 23:23:52.000000000 +0100
@@ -1,4 +1,48 @@
-Revision history for Perl extension Data::Alias
+version 1.16; 2011-11-17
+
+  * bugfix: use supported API to put destructor calls on the save stack
+    (the unsupported way used before was wrong for 64-bit systems on
+    perl 5.13.1 and later)
+
+  * document the behaviour of "alias return" in more detail
+
+  * convert .cvsignore to .gitignore
+
+version 1.15; 2011-06-21
+
+  * port to Perl 5.15.0, where the op type aelemfast has been split into
+    aelemfast and aelemfast_lex
+
+  * test compatibility with Devel::CallParser
+
+version 1.14; 2011-04-27
+
+  * bugfix: never unhook peephole optimiser, because unhooking is liable
+    to fail if anything else hooked it
+
+  * bugfix: revise check for dorassign opcode to cope with FreeBSD's
+    mutant Perl 5.8 that has it
+
+  * test POD syntax and coverage
+
+version 1.13; 2011-04-25
+
+  * bugfix: prevent the lexer getting confused if the first thing inside
+    an alias{} block is an open paren
+
+  * bugfix: don't crash if an rv2cv op is built with PL_parser null
+
+  * bugfix: handle variant structure of entersub op which lacks (ex-)list
+    op as direct child
+
+  * bugfix: squash bogus dtrace-related macro definitions that are picked
+    up due to defining PERL_CORE
+
+  * switch all pp functions to internal linkage
+
+  * avoid some compiler warnings
+
+  * include .cvsignore file in distribution
 
 1.12  Tue Feb 22 20:47 GMT 2011
        - Updated to work with Perl version 5.13.10, where GvGP() and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/MANIFEST new/Data-Alias-1.16/MANIFEST
--- old/Data-Alias-1.12/MANIFEST        2007-03-20 15:10:05.000000000 +0100
+++ new/Data-Alias-1.16/MANIFEST        2011-11-17 22:42:28.000000000 +0100
@@ -1,3 +1,4 @@
+.gitignore
 Alias.xs
 Changes
 inc/Module/Install.pm
@@ -16,6 +17,7 @@
 t/01_deref.t
 t/03_copy.t
 t/04_alias_parse.t
+t/04_swap.t
 t/05_alias_parse2.t
 t/06_alias_scope.t
 t/07_alias_anon_array.t
@@ -39,7 +41,10 @@
 t/26_alias_local.t
 t/28_alias_const.t
 t/29_alias_dorassign.t
+t/devel_callparser.t
 t/lib/assign.pm
 t/lib/Test/Builder.pm
 t/lib/Test/More.pm
 t/lib/Test/Simple.pm
+t/pod_cvg.t
+t/pod_syn.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/META.yml new/Data-Alias-1.16/META.yml
--- old/Data-Alias-1.12/META.yml        2011-02-22 21:46:02.000000000 +0100
+++ new/Data-Alias-1.16/META.yml        2011-11-17 23:24:00.000000000 +0100
@@ -16,4 +16,4 @@
     - t
 requires: 
   perl: 5.8.1
-version: 1.12
+version: 1.16
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/README new/Data-Alias-1.16/README
--- old/Data-Alias-1.12/README  2011-02-22 21:45:45.000000000 +0100
+++ new/Data-Alias-1.16/README  2011-11-17 23:24:33.000000000 +0100
@@ -1,4 +1,4 @@
-Data::Alias 1.12 - Comprehensive set of aliasing operations
+Data::Alias 1.16 - Comprehensive set of aliasing operations
 
 
 System requirements:
@@ -318,15 +318,13 @@
     replaces operations within the scope of "alias" by aliasing variants.
 
     For those familiar with perl's internals: it triggers on a ck_rv2cv
-    which resolves to the imported "alias" sub, and does a parser hack to
-    allow the "alias BLOCK" syntax. When the ck_entersub is triggered that
-    corresponds to it, the op is marked to be found later. The actual work
-    is done in a peep-hook which is installed on the ck_rv2cv trigger, and
-    processes the marked entersub and its children, replacing the pp_addrs
-    with aliasing replacements. The peep hook will also take care of any
-    subs defined within the lexical (but not dynamical) scope between the
-    ck_rv2cv and the ck_entersub. When no marked entersubs remain, the
-    Data::Alias-peeper stops and is deinstalled.
+    which resolves to the imported "alias" sub, and does a parser hack
+    to allow the "alias BLOCK" syntax. When the ck_entersub is triggered
+    that corresponds to it, the op is marked to be found later. The actual
+    work is done in a peep-hook, which processes the marked entersub and
+    its children, replacing the pp_addrs with aliasing replacements. The
+    peep hook will also take care of any subs defined within the lexical
+    (but not dynamical) scope between the ck_rv2cv and the ck_entersub.
 
 KNOWN ISSUES
     Lexical variables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/lib/Data/Alias.pm 
new/Data-Alias-1.16/lib/Data/Alias.pm
--- old/Data-Alias-1.12/lib/Data/Alias.pm       2011-02-22 21:45:33.000000000 
+0100
+++ new/Data-Alias-1.16/lib/Data/Alias.pm       2011-11-17 23:24:05.000000000 
+0100
@@ -5,7 +5,7 @@
 use strict;
 use warnings;
 
-our $VERSION = '1.12';
+our $VERSION = '1.16';
 
 use base 'Exporter';
 use base 'DynaLoader';
@@ -288,8 +288,23 @@
 
 =item Returning an alias
 
-Returns aliases from the current C<sub> or C<eval>.  Normally this only 
happens 
-for lvalue subs, but C<alias return> can be used in any sub.
+Returns aliases from the current C<sub> or C<eval>.  Normally this only
+happens for lvalue subs, but C<alias return> can be used in any sub.
+Lvalue subs only work for scalar return values, but C<alias return>
+can handle a list of return values.
+
+A sub call will very often copy the return value(s) immediately after
+they have been returned.  C<alias return> can't prevent that.  To pass
+an alias through a sub return and into something else, the call site
+must process the return value using an aliasing operation, or at least a
+non-copying one.  For example, ordinary assignment with the sub call on
+the right hand side will copy, but if the call site is in the scope of an
+C<alias> pragma then the assignment will instead alias the return value.
+
+When alias-returning a list of values from a subroutine, each individual
+value in the list is aliased.  The list as a whole is not aliasable;
+it is not an array.  At the call site, a list of aliases can be captured
+into separate variables or into an array, by an aliasing list assignment.
 
 =item Subroutines and evaluations
 
@@ -335,12 +350,11 @@
 For those familiar with perl's internals:  it triggers on a ck_rv2cv which 
 resolves to the imported C<alias> sub, and does a parser hack to allow the 
 C<alias BLOCK> syntax.  When the ck_entersub is triggered that corresponds to 
-it, the op is marked to be found later.  The actual work is done in a 
peep-hook 
-which is installed on the ck_rv2cv trigger, and processes the marked entersub 
+it, the op is marked to be found later.  The actual work is done in a 
peep-hook,
+which processes the marked entersub 
 and its children, replacing the pp_addrs with aliasing replacements.  The peep 
 hook will also take care of any subs defined within the lexical (but not 
-dynamical) scope between the ck_rv2cv and the ck_entersub.  When no marked 
-entersubs remain, the Data::Alias-peeper stops and is deinstalled.
+dynamical) scope between the ck_rv2cv and the ck_entersub.
 
 =head1 KNOWN ISSUES
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/t/04_swap.t 
new/Data-Alias-1.16/t/04_swap.t
--- old/Data-Alias-1.12/t/04_swap.t     1970-01-01 01:00:00.000000000 +0100
+++ new/Data-Alias-1.16/t/04_swap.t     2011-11-17 22:42:27.000000000 +0100
@@ -0,0 +1,19 @@
+use strict;
+use warnings qw(FATAL all);
+no warnings 'void';
+use lib 'lib';
+use Test::More tests => 4;
+
+use Data::Alias;
+
+our $x = "x";
+my $xref = "@{[\$x]}";
+our $y = "y";
+my $yref = "@{[\$y]}";
+alias { ($x, $y) = ($y, $x) };
+is $x, "y";
+is $y, "x";
+is "@{[\$x]}", $yref;
+is "@{[\$y]}", $xref;
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/t/devel_callparser.t 
new/Data-Alias-1.16/t/devel_callparser.t
--- old/Data-Alias-1.12/t/devel_callparser.t    1970-01-01 01:00:00.000000000 
+0100
+++ new/Data-Alias-1.16/t/devel_callparser.t    2011-11-17 22:42:27.000000000 
+0100
@@ -0,0 +1,22 @@
+use warnings;
+no warnings "void";
+use strict;
+
+BEGIN {
+       eval { require Devel::CallParser };
+       if($@ ne "") {
+               require Test::More;
+               Test::More::plan(skip_all => "Devel::CallParser unavailable");
+       }
+}
+
+use Test::More tests => 2;
+
+use Devel::CallParser ();
+
+use Data::Alias;
+
+is alias(42), 42;
+is alias{42}, 42;
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/t/pod_cvg.t 
new/Data-Alias-1.16/t/pod_cvg.t
--- old/Data-Alias-1.12/t/pod_cvg.t     1970-01-01 01:00:00.000000000 +0100
+++ new/Data-Alias-1.16/t/pod_cvg.t     2011-11-17 22:42:27.000000000 +0100
@@ -0,0 +1,9 @@
+use warnings;
+use strict;
+
+use Test::More;
+plan skip_all => "Test::Pod::Coverage not available"
+       unless eval "use Test::Pod::Coverage; 1";
+Test::Pod::Coverage::all_pod_coverage_ok();
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Data-Alias-1.12/t/pod_syn.t 
new/Data-Alias-1.16/t/pod_syn.t
--- old/Data-Alias-1.12/t/pod_syn.t     1970-01-01 01:00:00.000000000 +0100
+++ new/Data-Alias-1.16/t/pod_syn.t     2011-11-17 22:42:27.000000000 +0100
@@ -0,0 +1,8 @@
+use warnings;
+use strict;
+
+use Test::More;
+plan skip_all => "Test::Pod not available" unless eval "use Test::Pod 1.00; 1";
+Test::Pod::all_pod_files_ok();
+
+1;

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to