From: Niko Tyni Date: Sat, 6 Nov 2010 13:18:15 +0000 (-0700) Subject: G_VOID, G_SCALAR, and G_ARRAY are not separate bits anymore X-Git-Tag: accepted/trunk/20130322.191538~6916 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0b06a75363d6bf6cd309efd90b7182a041a1f4f1;p=platform%2Fupstream%2Fperl.git G_VOID, G_SCALAR, and G_ARRAY are not separate bits anymore Commit 2f8edad0d37e91319b6ba10b3745327ea49c179 made G_ARRAY equal to G_SCALAR | G_VOID, contrary to perlcall.pod. Bring the documentation up to date and add a test to prevent a similar (although unlikely) accident in the future. --- diff --git a/ext/XS-APItest/t/call.t b/ext/XS-APItest/t/call.t index caa86c4..fd968b8 100644 --- a/ext/XS-APItest/t/call.t +++ b/ext/XS-APItest/t/call.t @@ -11,7 +11,7 @@ use strict; BEGIN { require '../../t/test.pl'; - plan(435); + plan(436); use_ok('XS::APItest') }; @@ -149,6 +149,15 @@ for my $test ( }; +{ + # these are the ones documented in perlcall.pod + my @flags = (G_DISCARD, G_NOARGS, G_EVAL, G_KEEPERR); + my $mask = 0; + $mask |= $_ for (@flags); + is(unpack('%32b*', pack('l', $mask)), @flags, + "G_DISCARD and the rest are separate bits"); +} + foreach my $inx ("", "aabbcc\n", [qw(aa bb cc)]) { foreach my $outx ("", "xxyyzz\n", [qw(xx yy zz)]) { my $warn; diff --git a/pod/perlcall.pod b/pod/perlcall.pod index 1694848..e32e77e 100644 --- a/pod/perlcall.pod +++ b/pod/perlcall.pod @@ -121,10 +121,9 @@ been warned. =head1 FLAG VALUES -The C parameter in all the I functions is a bit mask -which can consist of any combination of the symbols defined below, -OR'ed together. - +The C parameter in all the I functions is one of G_VOID, +G_SCALAR, or G_ARRAY, which indicate the call context, OR'ed together +with a bit mask of any combination of the other G_* symbols defined below. =head2 G_VOID