[svn:parrot] r39673 - in trunk: include/parrot src
petdance at svn.parrot.org
petdance at svn.parrot.org
Sat Jun 20 06:30:08 UTC 2009
Author: petdance
Date: Sat Jun 20 06:30:04 2009
New Revision: 39673
URL: https://trac.parrot.org/parrot/changeset/39673
Log:
turns out that key_string can return NULL.
Modified:
trunk/include/parrot/key.h
trunk/src/key.c
Modified: trunk/include/parrot/key.h
==============================================================================
--- trunk/include/parrot/key.h Fri Jun 19 23:44:15 2009 (r39672)
+++ trunk/include/parrot/key.h Sat Jun 20 06:30:04 2009 (r39673)
@@ -167,7 +167,7 @@
__attribute__nonnull__(2);
PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
+PARROT_CAN_RETURN_NULL
STRING * key_string(PARROT_INTERP, ARGIN(PMC *key))
__attribute__nonnull__(1)
__attribute__nonnull__(2);
Modified: trunk/src/key.c
==============================================================================
--- trunk/src/key.c Fri Jun 19 23:44:15 2009 (r39672)
+++ trunk/src/key.c Sat Jun 20 06:30:04 2009 (r39673)
@@ -440,18 +440,17 @@
*/
PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
+PARROT_CAN_RETURN_NULL
STRING *
key_string(PARROT_INTERP, ARGIN(PMC *key))
{
ASSERT_ARGS(key_string)
- INTVAL int_key;
- FLOATVAL num_key;
switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
/* remember to COW strings instead of returning them directly */
case KEY_string_FLAG:
{
+ INTVAL int_key;
STRING *s;
GETATTR_Key_str_key(interp, key, s);
if (s)
@@ -460,6 +459,7 @@
}
case KEY_string_FLAG | KEY_register_FLAG:
{
+ INTVAL int_key;
STRING *s;
GETATTR_Key_int_key(interp, key, int_key);
s = REG_STR(interp, int_key);
@@ -469,25 +469,36 @@
}
case KEY_pmc_FLAG | KEY_register_FLAG:
{
+ INTVAL int_key;
PMC *reg;
GETATTR_Key_int_key(interp, key, int_key);
reg = REG_PMC(interp, int_key);
return VTABLE_get_string(interp, reg);
}
case KEY_integer_FLAG:
+ {
+ INTVAL int_key;
GETATTR_Key_int_key(interp, key, int_key);
return Parrot_str_from_int(interp, int_key);
+ }
case KEY_integer_FLAG | KEY_register_FLAG:
+ {
+ INTVAL int_key;
GETATTR_Key_int_key(interp, key, int_key);
return Parrot_str_from_int(interp, REG_INT(interp, int_key));
-
+ }
case KEY_number_FLAG:
+ {
+ FLOATVAL num_key;
GETATTR_Key_num_key(interp, key, num_key);
return Parrot_str_from_num(interp, num_key);
+ }
case KEY_number_FLAG | KEY_register_FLAG:
+ {
+ INTVAL int_key;
GETATTR_Key_int_key(interp, key, int_key);
return Parrot_str_from_num(interp, REG_NUM(interp, int_key));
-
+ }
default:
case KEY_pmc_FLAG:
return VTABLE_get_string(interp, key);
More information about the parrot-commits
mailing list