develooper Front page | perl.perl5.porters | Postings from November 2010

[perl #78862] [PATCH] G_VOID, G_SCALAR, and G_ARRAY are not separate bits anymore

Thread Previous
From:
Niko Tyni
Date:
November 6, 2010 04:40
Subject:
[perl #78862] [PATCH] G_VOID, G_SCALAR, and G_ARRAY are not separate bits anymore
Message ID:
rt-3.6.HEAD-4263-1289043613-336.78862-75-0@perl.org
# New Ticket Created by  Niko Tyni 
# Please include the string:  [perl #78862]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=78862 >


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.
---
 ext/XS-APItest/t/call.t |   11 ++++++++++-
 pod/perlcall.pod        |    7 +++----
 2 files changed, 13 insertions(+), 5 deletions(-)

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<flags> parameter in all the I<call_*> functions is a bit mask
-which can consist of any combination of the symbols defined below,
-OR'ed together.
-
+The C<flags> parameter in all the I<call_*> 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
 
-- 
1.7.2.3


Thread Previous


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About