Here is the patch. It changes the string_bool function an his declaration, and deletes the check for null before calling it in several places.
-- Salu2
Index: src/ops/core.ops =================================================================== --- src/ops/core.ops (revisión: 27462) +++ src/ops/core.ops (copia de trabajo) @@ -315,7 +315,7 @@ } op if (invar STR, labelconst INT) { - if ($1 && string_bool(interp, $1)) + if (string_bool(interp, $1)) goto OFFSET($2); } @@ -349,7 +349,7 @@ } op unless(invar STR, labelconst INT) { - if (!$1 || !string_bool(interp, $1)) + if (!string_bool(interp, $1)) goto OFFSET($2); } Index: src/string.c =================================================================== --- src/string.c (revisión: 27462) +++ src/string.c (copia de trabajo) @@ -1806,9 +1806,9 @@ PARROT_API PARROT_WARN_UNUSED_RESULT INTVAL -string_bool(PARROT_INTERP, ARGIN(const STRING *s)) +string_bool(PARROT_INTERP, ARGIN_NULLOK(const STRING *s)) { - const INTVAL len = string_length(interp, s); + const INTVAL len = s ? string_length(interp, s) : 0; if (len == 0) return 0; Index: src/pmc/string.pmc =================================================================== --- src/pmc/string.pmc (revisión: 27462) +++ src/pmc/string.pmc (copia de trabajo) @@ -167,7 +167,7 @@ VTABLE INTVAL get_bool() { STRING * const s = VTABLE_get_string(INTERP, SELF); - return s ? string_bool(INTERP, s) : 0; + return string_bool(INTERP, s); } /* Index: CREDITS =================================================================== --- CREDITS (revisión: 27462) +++ CREDITS (copia de trabajo) @@ -1,4 +1,4 @@ -# $Id$ +ÿ# $Id$ Following in the steps of other open source projects that eventually take over the world, here is the partial list @@ -498,6 +498,10 @@ N: Nigelsandever D: Win32 patches +N: NotFound +D: Bug fixing and cage cleaning. +E: [EMAIL PROTECTED] + N: Nuno 'smash' Carvalho D: PGE/perl6/abc debugging and testing E: [EMAIL PROTECTED] Index: include/parrot/string_funcs.h =================================================================== --- include/parrot/string_funcs.h (revisión: 27462) +++ include/parrot/string_funcs.h (copia de trabajo) @@ -150,9 +150,8 @@ PARROT_API PARROT_WARN_UNUSED_RESULT -INTVAL string_bool(PARROT_INTERP, ARGIN(const STRING *s)) - __attribute__nonnull__(1) - __attribute__nonnull__(2); +INTVAL string_bool(PARROT_INTERP, ARGIN_NULLOK(const STRING *s)) + __attribute__nonnull__(1); PARROT_API PARROT_WARN_UNUSED_RESULT