[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