]> git.vpit.fr Git - perl/modules/Variable-Magic.git/commitdiff
Make getdata() return an empty list when no magic is present
authorVincent Pit <vince@profvince.com>
Tue, 23 Jun 2009 23:47:14 +0000 (01:47 +0200)
committerVincent Pit <vince@profvince.com>
Tue, 23 Jun 2009 23:47:14 +0000 (01:47 +0200)
And correct the wrong chunk of doc that had slipped in when the wizard validation cleanup happened.

Magic.xs
lib/Variable/Magic.pm
t/13-data.t

index 13ffad0d042788455eff4888613b21f15ed8d74a..77b620999cf2a964ad1be719a2f49590701e30ba 100644 (file)
--- a/Magic.xs
+++ b/Magic.xs
@@ -1468,7 +1468,7 @@ PPCODE:
  sig  = vmg_wizard_sig(wiz);
  data = vmg_data_get(SvRV(sv), sig);
  if (!data)
-  XSRETURN_UNDEF;
+  XSRETURN_EMPTY;
  ST(0) = data;
  XSRETURN(1);
 
index 44edfe64fccbd69512a15535becb22f6c92cdeed..2ca401216f653532cfaea63c7f7ffd7ebff0f5b7 100644 (file)
@@ -401,7 +401,7 @@ Of course, this example does nothing with the values that are added after the C<
     getdata [$@%&*]var, [$wiz|$sig]
 
 This accessor fetches the private data associated with the magic C<$wiz> (or the signature C<$sig>) in the variable.
-It croaks when C<$wiz> or C<$sig> do not represent a current valid magic object attached to the variable, and returns C<undef> when the wizard has no data constructor or when the data is actually C<undef>.
+It croaks when C<$wiz> or C<$sig> do not represent a valid magic object, and returns an empty list if no such magic is attached to the variable or when the wizard has no data constructor.
 
     # Get the attached data, or undef if the wizard does not attach any.
     my $data = getdata $x, $wiz;
index a67b79cfa57e9aa6cd9103c0ad0e6df51caf3a48..41e0b3acfb41f769aea662e4cc50fd6c8ba737ba 100644 (file)
@@ -78,9 +78,9 @@ $res = eval { cast $a, $wiz };
 is($@, '', 'cast non-data wizard doesn\'t croak');
 ok($res,   'cast non-data wizard returns true');
 
-$data = eval { getdata $a, $wiz };
-is($@, '',       'getdata from non-data wizard doesn\'t croak');
-is($data, undef, 'getdata from non-data wizard invalid returns undef');
+my @data = eval { getdata $a, $wiz };
+is($@,            '',  'getdata from non-data wizard doesn\'t croak');
+is_deeply(\@data, [ ], 'getdata from non-data wizard invalid returns undef');
 
 $wiz = wizard data => sub { ++$_[1] };
 my ($di, $ei) = (1, 10);