1#!perl 2 3# Consider two kinds of magic : 4# A : PERL_MAGIC_uvar, with get (but no set) magic 5# B : PERL_MAGIC_ext, with a zero vtbl 6# If those magic are attached on a sv in such a way that the MAGIC chain 7# looks like sv -> B -> A -> NULL (i.e. we first apply A and then B), then 8# mg_magical won't turn SvRMAGICAL on. However, if the chain is in the 9# opposite order (sv -> A -> B -> NULL), SvRMAGICAL used to be turned on. 10 11use strict; 12use warnings; 13 14use Test::More tests => 3; 15 16use_ok('XS::APItest'); 17 18my (%h1, %h2); 19my @f; 20 21rmagical_cast(\%h1, 0); # A 22rmagical_cast(\%h1, 1); # B 23@f = rmagical_flags(\%h1); 24ok(!$f[2], "For sv -> B -> A -> NULL, SvRMAGICAL(sv) is false"); 25 26rmagical_cast(\%h2, 1); # B 27rmagical_cast(\%h2, 0); # A 28@f = rmagical_flags(\%h2); 29ok(!$f[2], "For sv -> A -> B -> NULL, SvRMAGICAL(sv) is false"); 30