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;


Reply via email to