Hello community,
here is the log from the commit of package perl-Variable-Magic for
openSUSE:Factory checked in at 2015-10-12 10:01:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Variable-Magic (Old)
and /work/SRC/openSUSE:Factory/.perl-Variable-Magic.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Variable-Magic"
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Variable-Magic/perl-Variable-Magic.changes
2015-07-23 15:23:00.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Variable-Magic.new/perl-Variable-Magic.changes
2015-10-12 10:01:50.000000000 +0200
@@ -1,0 +2,24 @@
+Tue Oct 6 09:19:29 UTC 2015 - [email protected]
+
+- updated to 0.59
+ see /usr/share/doc/packages/perl-Variable-Magic/Changes
+
+ 0.59 2015-10-05 19:05 UTC
+ + Chg : The magic callbacks are now always executed in a new stack.
+ This should have no negative impact (performance-wise or
+ behaviour-wise) on your code, but may actually fix some
obscure
+ bugs.
+ + Fix : [RT #107294] : Crash during install of Variable-Magic-0.58
+ running "t\18-opinfo.t".
+ A recent change in the core implementation of
transliterations
+ caused an undefined behaviour when it interacted with this
+ module, which resulted in visible stack corruption on Win32
+ perls compiled with MSVC when the op_info feature was
enabled.
+ This was fixed by using a separate stack for the magic
+ callbacks.
+ Thanks Peter Stokes for reporting and providing greatly
+ helpful feedback.
+ + Fix : The object op_info feature will now handle correctly Unicode
+ transliteration, multideref and custom ops.
+
+-------------------------------------------------------------------
Old:
----
Variable-Magic-0.58.tar.gz
New:
----
Variable-Magic-0.59.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Variable-Magic.spec ++++++
--- /var/tmp/diff_new_pack.M6NVnc/_old 2015-10-12 10:01:51.000000000 +0200
+++ /var/tmp/diff_new_pack.M6NVnc/_new 2015-10-12 10:01:51.000000000 +0200
@@ -17,7 +17,7 @@
Name: perl-Variable-Magic
-Version: 0.58
+Version: 0.59
Release: 0
%define cpan_name Variable-Magic
Summary: Associate user-defined magic to variables from Perl
++++++ Variable-Magic-0.58.tar.gz -> Variable-Magic-0.59.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Variable-Magic-0.58/Changes
new/Variable-Magic-0.59/Changes
--- old/Variable-Magic-0.58/Changes 2015-07-21 17:41:49.000000000 +0200
+++ new/Variable-Magic-0.59/Changes 2015-10-05 20:42:40.000000000 +0200
@@ -1,5 +1,23 @@
Revision history for Variable-Magic
+0.59 2015-10-05 19:05 UTC
+ + Chg : The magic callbacks are now always executed in a new stack.
+ This should have no negative impact (performance-wise or
+ behaviour-wise) on your code, but may actually fix some obscure
+ bugs.
+ + Fix : [RT #107294] : Crash during install of Variable-Magic-0.58
+ running "t\18-opinfo.t".
+ A recent change in the core implementation of transliterations
+ caused an undefined behaviour when it interacted with this
+ module, which resulted in visible stack corruption on Win32
+ perls compiled with MSVC when the op_info feature was enabled.
+ This was fixed by using a separate stack for the magic
+ callbacks.
+ Thanks Peter Stokes for reporting and providing greatly
+ helpful feedback.
+ + Fix : The object op_info feature will now handle correctly Unicode
+ transliteration, multideref and custom ops.
+
0.58 2015-07-21 16:00 UTC
+ Add : If a non-len magic callback returns a reference, it will now
only be freed at the end of the statement that caused the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Variable-Magic-0.58/META.json
new/Variable-Magic-0.59/META.json
--- old/Variable-Magic-0.58/META.json 2015-07-21 17:42:56.000000000 +0200
+++ new/Variable-Magic-0.59/META.json 2015-10-05 20:43:40.000000000 +0200
@@ -4,7 +4,7 @@
"Vincent Pit <[email protected]>"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter
version 2.150005",
+ "generated_by" : "ExtUtils::MakeMaker version 7.1, CPAN::Meta::Converter
version 2.150005",
"license" : [
"perl_5"
],
@@ -66,6 +66,6 @@
"url" :
"http://git.profvince.com/?p=perl%2Fmodules%2FVariable-Magic.git"
}
},
- "version" : "0.58",
+ "version" : "0.59",
"x_serialization_backend" : "JSON::PP version 2.27300"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Variable-Magic-0.58/META.yml
new/Variable-Magic-0.59/META.yml
--- old/Variable-Magic-0.58/META.yml 2015-07-21 17:42:55.000000000 +0200
+++ new/Variable-Magic-0.59/META.yml 2015-10-05 20:43:40.000000000 +0200
@@ -20,7 +20,7 @@
Config: '0'
ExtUtils::MakeMaker: '0'
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.0401, CPAN::Meta::Converter
version 2.150005'
+generated_by: 'ExtUtils::MakeMaker version 7.1, CPAN::Meta::Converter version
2.150005'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -41,5 +41,5 @@
homepage: http://search.cpan.org/dist/Variable-Magic/
license: http://dev.perl.org/licenses/
repository: http://git.profvince.com/?p=perl%2Fmodules%2FVariable-Magic.git
-version: '0.58'
+version: '0.59'
x_serialization_backend: 'CPAN::Meta::YAML version 0.016'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Variable-Magic-0.58/Magic.xs
new/Variable-Magic-0.59/Magic.xs
--- old/Variable-Magic-0.58/Magic.xs 2015-07-21 17:35:40.000000000 +0200
+++ new/Variable-Magic-0.59/Magic.xs 2015-10-01 19:46:59.000000000 +0200
@@ -133,6 +133,20 @@
# define IN_PERL_COMPILETIME (PL_curcop == &PL_compiling)
#endif
+#ifndef OP_NAME
+# define OP_NAME(O) (PL_op_name[(O)->op_type])
+#endif
+
+#ifndef OP_CLASS
+# define OP_CLASS(O) (PL_opargs[(O)->op_type] & OA_CLASS_MASK)
+#endif
+
+#ifdef DEBUGGING
+# define VMG_ASSERT(C) assert(C)
+#else
+# define VMG_ASSERT(C)
+#endif
+
/* uvar magic and Hash::Util::FieldHash were commited with 28419, but we only
* enable them on 5.10 */
#if VMG_HAS_PERL(5, 10, 0)
@@ -317,8 +331,7 @@
static I32 vmg_call_sv(pTHX_ SV *sv, I32 flags, int (*cleanup)(pTHX_ void *),
void *ud) {
#define vmg_call_sv(S, F, C, U) vmg_call_sv(aTHX_ (S), (F), (C), (U))
- I32 ret, cxix;
- PERL_CONTEXT saved_cx;
+ I32 ret;
SV *old_err = NULL;
if (SvTRUE(ERRSV)) {
@@ -326,15 +339,8 @@
sv_setsv(ERRSV, &PL_sv_undef);
}
- cxix = (cxstack_ix < cxstack_max) ? (cxstack_ix + 1) : Perl_cxinc(aTHX);
- /* The last popped context will be reused by call_sv(), but our callers may
- * still need its previous value. Back it up so that it isn't clobbered. */
- saved_cx = cxstack[cxix];
-
ret = call_sv(sv, flags | G_EVAL);
- cxstack[cxix] = saved_cx;
-
if (SvTRUE(ERRSV)) {
SvREFCNT_dec(old_err);
@@ -386,6 +392,9 @@
#if VMG_HAS_PERL(5, 21, 5)
OPc_METHOP,
#endif
+#if VMG_HAS_PERL(5, 21, 7)
+ OPc_UNOP_AUX,
+#endif
OPc_MAX
} opclass;
@@ -405,17 +414,26 @@
#if VMG_HAS_PERL(5, 21, 5)
"B::METHOP",
#endif
+#if VMG_HAS_PERL(5, 21, 7)
+ "B::UNOP_AUX",
+#endif
NULL
};
-static opclass vmg_opclass(const OP *o) {
+static opclass vmg_opclass(pTHX_ const OP *o) {
+#define vmg_opclass(O) vmg_opclass(aTHX_ (O))
#if 0
if (!o)
return OPc_NULL;
#endif
- if (o->op_type == 0)
+ if (o->op_type == 0) {
+#if VMG_HAS_PERL(5, 21, 7)
+ if (o->op_targ == OP_NEXTSTATE || o->op_targ == OP_DBSTATE)
+ return OPc_COP;
+#endif
return (o->op_flags & OPf_KIDS) ? OPc_UNOP : OPc_BASEOP;
+ }
if (o->op_type == OP_SASSIGN)
return ((o->op_private & OPpASSIGN_BACKWARDS) ? OPc_UNOP : OPc_BINOP);
@@ -438,7 +456,7 @@
return OPc_PADOP;
#endif
- switch (PL_opargs[o->op_type] & OA_CLASS_MASK) {
+ switch (OP_CLASS(o)) {
case OA_BASEOP:
return OPc_BASEOP;
case OA_UNOP:
@@ -456,7 +474,16 @@
case OA_PADOP:
return OPc_PADOP;
case OA_PVOP_OR_SVOP:
- return (o->op_private & (OPpTRANS_TO_UTF|OPpTRANS_FROM_UTF)) ? OPc_SVOP :
OPc_PVOP;
+ return (
+#if VMG_HAS_PERL(5, 13, 7)
+ (o->op_type != OP_CUSTOM) &&
+#endif
+ (o->op_private & (OPpTRANS_TO_UTF|OPpTRANS_FROM_UTF)))
+#if defined(USE_ITHREADS) && VMG_HAS_PERL(5, 8, 9)
+ ? OPc_PADOP : OPc_PVOP;
+#else
+ ? OPc_SVOP : OPc_PVOP;
+#endif
case OA_LOOP:
return OPc_LOOP;
case OA_COP:
@@ -481,6 +508,10 @@
case OA_METHOP:
return OPc_METHOP;
#endif
+#if VMG_HAS_PERL(5, 21, 7)
+ case OA_UNOP_AUX:
+ return OPc_UNOP_AUX;
+#endif
}
return OPc_BASEOP;
@@ -818,6 +849,8 @@
ENTER;
SAVETMPS;
+ PUSHSTACKi(PERLSI_MAGIC);
+
PUSHMARK(SP);
EXTEND(SP, items + 1);
PUSHs(sv_2mortal(newRV_inc(sv)));
@@ -836,6 +869,8 @@
#endif
PUTBACK;
+ POPSTACK;
+
FREETMPS;
LEAVE;
@@ -1117,8 +1152,12 @@
switch (opinfo) {
case VMG_OP_INFO_NAME: {
- OPCODE t = PL_op->op_type;
- return sv_2mortal(newSVpvn(PL_op_name[t], vmg_op_name_len[t]));
+ const char *name;
+ STRLEN name_len;
+ OPCODE t = PL_op->op_type;
+ name = OP_NAME(PL_op);
+ name_len = (t == OP_CUSTOM) ? strlen(name) : vmg_op_name_len[t];
+ return sv_2mortal(newSVpvn(name, name_len));
}
case VMG_OP_INFO_OBJECT: {
dMY_CXT;
@@ -1217,6 +1256,8 @@
ENTER;
SAVETMPS;
+ PUSHSTACKi(PERLSI_MAGIC);
+
PUSHMARK(SP);
EXTEND(SP, args + 1);
PUSHs(sv_2mortal(newRV_inc(sv)));
@@ -1251,6 +1292,8 @@
svr = NULL;
PUTBACK;
+ POPSTACK;
+
FREETMPS;
LEAVE;
@@ -1327,6 +1370,8 @@
ENTER;
SAVETMPS;
+ PUSHSTACKi(PERLSI_MAGIC);
+
PUSHMARK(SP);
EXTEND(SP, 3);
PUSHs(sv_2mortal(newRV_inc(sv)));
@@ -1354,6 +1399,8 @@
--ret;
PUTBACK;
+ POPSTACK;
+
FREETMPS;
LEAVE;
@@ -1528,6 +1575,8 @@
ENTER;
SAVETMPS;
+ PUSHSTACKi(PERLSI_MAGIC);
+
PUSHMARK(SP);
EXTEND(SP, 2);
PUSHs(sv_2mortal(newRV_inc(sv)));
@@ -1555,6 +1604,8 @@
ret = (int) SvIV(svr);
PUTBACK;
+ POPSTACK;
+
FREETMPS;
LEAVE;
@@ -1861,7 +1912,7 @@
vmg_sv_magicext((SV *) PL_strtab, NULL, &vmg_global_teardown_vtbl, NULL, 0);
}
} else {
- assert(vmg_loaded > 1);
+ VMG_ASSERT(vmg_loaded > 1);
--vmg_loaded;
}
@@ -1890,7 +1941,7 @@
MUTEX_INIT(&vmg_op_name_init_mutex);
vmg_loaded = 1;
} else {
- assert(vmg_loaded > 0);
+ VMG_ASSERT(vmg_loaded > 0);
++vmg_loaded;
}
@@ -2024,7 +2075,7 @@
MY_CXT.depth = old_depth;
MY_CXT.freed_tokens = NULL;
VMG_LOADED_LOCK;
- assert(vmg_loaded > 0);
+ VMG_ASSERT(vmg_loaded > 0);
++vmg_loaded;
VMG_LOADED_UNLOCK;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Variable-Magic-0.58/README
new/Variable-Magic-0.59/README
--- old/Variable-Magic-0.58/README 2015-07-21 17:42:56.000000000 +0200
+++ new/Variable-Magic-0.59/README 2015-10-05 20:43:40.000000000 +0200
@@ -2,7 +2,7 @@
Variable::Magic - Associate user-defined magic to variables from Perl.
VERSION
- Version 0.58
+ Version 0.59
SYNOPSIS
use Variable::Magic qw<wizard cast VMG_OP_INFO_NAME>;
@@ -644,9 +644,6 @@
perldoc Variable::Magic
- Tests code coverage report is available at
- <http://www.profvince.com/perl/cover/Variable-Magic>.
-
COPYRIGHT & LICENSE
Copyright 2007,2008,2009,2010,2011,2012,2013,2014,2015 Vincent Pit, all
rights reserved.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Variable-Magic-0.58/lib/Variable/Magic.pm
new/Variable-Magic-0.59/lib/Variable/Magic.pm
--- old/Variable-Magic-0.58/lib/Variable/Magic.pm 2015-07-21
17:35:40.000000000 +0200
+++ new/Variable-Magic-0.59/lib/Variable/Magic.pm 2015-10-05
20:20:13.000000000 +0200
@@ -11,13 +11,13 @@
=head1 VERSION
-Version 0.58
+Version 0.59
=cut
our $VERSION;
BEGIN {
- $VERSION = '0.58';
+ $VERSION = '0.59';
}
=head1 SYNOPSIS
@@ -749,8 +749,6 @@
perldoc Variable::Magic
-Tests code coverage report is available at
L<http://www.profvince.com/perl/cover/Variable-Magic>.
-
=head1 COPYRIGHT & LICENSE
Copyright 2007,2008,2009,2010,2011,2012,2013,2014,2015 Vincent Pit, all rights
reserved.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Variable-Magic-0.58/t/18-opinfo.t
new/Variable-Magic-0.59/t/18-opinfo.t
--- old/Variable-Magic-0.58/t/18-opinfo.t 2015-07-20 20:00:45.000000000
+0200
+++ new/Variable-Magic-0.59/t/18-opinfo.t 2015-09-25 12:22:00.000000000
+0200
@@ -3,7 +3,7 @@
use strict;
use warnings;
-use Test::More tests => 17 * (3 + 4) + 5 + 1;
+use Test::More tests => 19 * (3 + 4) + 5 + 1;
use Config qw<%Config>;
@@ -18,34 +18,42 @@
? 'aelemfast'
: 'sassign';
my $aelemf = ("$]" < 5.013 or $is_5130_release) ? 'aelemfast' : 'sassign';
-my $aelemf_op = $aelemf eq 'sassign'
+my $aelemf_op = ($aelemf eq 'sassign')
? 'B::BINOP' : $Config{useithreads} ? 'B::PADOP' :
'B::SVOP';
my $meth_op = ("$]" < 5.021_005) ? 'B::SVOP' : 'B::METHOP';
+my $trutf_op = ($Config{useithreads} && "$]" >= 5.008_009)
+ ? 'B::PADOP' : 'B::SVOP';
+my $deref = ("$]" < 5.021_007) ? 'helem' : 'multideref';
+my $deref_op = ($deref eq 'multideref') ? 'B::UNOP_AUX' : 'B::UNOP';
our @o;
my @tests = (
- [ 'len', '@c', 'my @c', 'my $x = @c', [ 'padav', 'B::OP' ]
],
- [ 'get', '$c[0]', 'my @c', 'my $x = $c[0]', [ $aelem, 'B::OP' ]
],
- [ 'get', '$o[0]', 'local @o', 'my $x = $o[0]', [ $aelemf, $aelemf_op ]
],
- [ 'get', '$c', 'my $c = 1', '++$c', [ 'preinc', 'B::UNOP' ]
],
- [ 'get', '$c', 'my $c = 1', '$c ** 2', [ 'pow', 'B::BINOP' ]
],
- [ 'get', '$c', 'my $c = 1', 'my $x = $c', [ 'sassign', 'B::BINOP' ]
],
- [ 'get', '$c', 'my $c = 1', '1 if $c', [ 'and', 'B::LOGOP' ]
],
- [ 'get', '$c', 'my $c = []','ref $c', [ 'ref', 'B::UNOP' ]
],
- [ 'get', '$c', 'my $c = $0','-f $c', [ 'ftfile', 'B::UNOP' ]
],
+ [ 'len', '@c', 'my @c', 'my $x = @c', [ 'padav', 'B::OP' ]
],
+ [ 'get', '$c[0]', 'my @c', 'my $x = $c[0]', [ $aelem, 'B::OP' ]
],
+ [ 'get', '$o[0]', 'local @o', 'my $x = $o[0]', [ $aelemf, $aelemf_op ]
],
+ [ 'get', '$x->{a}', 'my $x', 'my $y = $x->{a}{b}',
+ [ $deref, $deref_op ]
],
+ [ 'get', '$c', 'my $c = 1', '++$c', [ 'preinc', 'B::UNOP' ]
],
+ [ 'get', '$c', 'my $c = 1', '$c ** 2', [ 'pow', 'B::BINOP' ]
],
+ [ 'get', '$c', 'my $c = 1', 'my $x = $c', [ 'sassign', 'B::BINOP' ]
],
+ [ 'get', '$c', 'my $c = 1', '1 if $c', [ 'and', 'B::LOGOP' ]
],
+ [ 'get', '$c', 'my $c = []', 'ref $c', [ 'ref', 'B::UNOP' ]
],
+ [ 'get', '$c', 'my $c = $0', '-f $c', [ 'ftfile', 'B::UNOP' ]
],
[ 'get', '$c', 'my $c = "Z"',
'my $i = 1; Z:goto $c if $i--', [ 'goto', 'B::UNOP' ]
],
- [ 'set', '$c', 'my $c = 1', 'bless \$c, "main"',
+ [ 'set', '$c', 'my $c = 1', 'bless \$c, "main"',
[ 'bless', 'B::LISTOP' ]
],
- [ 'get', '$c', 'my $c = ""','$c =~ /x/', [ 'match', 'B::PMOP' ]
],
+ [ 'get', '$c', 'my $c = ""', '$c =~ /x/', [ 'match', 'B::PMOP' ]
],
[ 'get', '$c', 'my $c = "Variable::Magic::TestPkg"',
- '$c->foo()', [ 'method_named', $meth_op ]
],
- [ 'get', '$c', 'my $c = ""','$c =~ y/x/y/', [ 'trans', 'B::PVOP' ]
],
- [ 'get', '$c', 'my $c = 1', '1 for 1 .. $c',
+ '$c->foo()', [ 'method_named', $meth_op ]
],
+ [ 'get', '$c', 'my $c = ""', '$c =~ y/x/y/', [ 'trans', 'B::PVOP' ]
],
+ [ 'get', '$c', 'my $c = ""', '$c =~ y/\x{100}//',
+ [ 'trans', $trutf_op ]
],
+ [ 'get', '$c', 'my $c = 1', '1 for 1 .. $c',
[ 'enteriter', 'B::LOOP' ]
],
- [ 'free','$c', 'my $c = 1', 'last', [ 'last', 'B::OP' ]
],
- [ 'free','$c', 'L:{my $c = 1', 'last L}', [ 'last', 'B::OP' ]
],
+ [ 'free','$c', 'my $c = 1', 'last', [ 'last', 'B::OP' ]
],
+ [ 'free','$c', 'L:{my $c = 1', 'last L}', [ 'last', 'B::OP' ]
],
);
our $done;