summaryrefslogtreecommitdiff
path: root/toke.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2012-01-16 16:21:21 +0100
committerNicholas Clark <nick@ccl4.org>2012-01-16 16:21:21 +0100
commitc8ca97b0f5c0db7ad9b35fc9c4bea37281bc79ff (patch)
treeafcce7759ec7f388077b95ff5d7b7fbaaa361140 /toke.c
parent86e2f32949f588e0df48328ed7dfb2e90d8b142b (diff)
downloadperl-c8ca97b0f5c0db7ad9b35fc9c4bea37281bc79ff.tar.gz
In Perl_feature_is_enabled() use cBOOL to convert the pointer to a "bool".
On some platforms which don't have a (real) bool type, bool is actually a char, and hence (sadly) it's correct for the compiler to truncate when assigning to it, instead of what the programmer thought was going to happen (testing zero or not). In Perl_feature_is_enabled(), the expression is a pointer, so if it converts to an integer with the bottom 8 bits zero, then on these platforms it would truncate to "false". Not what was expected.
Diffstat (limited to 'toke.c')
-rw-r--r--toke.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/toke.c b/toke.c
index 6766c0561c..fa4c9c95ca 100644
--- a/toke.c
+++ b/toke.c
@@ -614,11 +614,8 @@ Perl_feature_is_enabled(pTHX_ const char *const name, STRLEN namelen)
return FALSE;
memcpy(&he_name[8], name, namelen);
- return
- cop_hints_fetch_pvn(
- PL_curcop, he_name, 8 + namelen, 0,
- REFCOUNTED_HE_EXISTS
- );
+ return cBOOL(cop_hints_fetch_pvn(PL_curcop, he_name, 8 + namelen, 0,
+ REFCOUNTED_HE_EXISTS));
}
/*