[svn:parrot] r40226 - in trunk: include/parrot src

petdance at svn.parrot.org petdance at svn.parrot.org
Thu Jul 23 06:51:52 UTC 2009


Author: petdance
Date: Thu Jul 23 06:51:50 2009
New Revision: 40226
URL: https://trac.parrot.org/parrot/changeset/40226

Log:
Parrot_get_namespace_keyed should not take a NULL pmc_key

Modified:
   trunk/include/parrot/global.h
   trunk/src/global.c

Modified: trunk/include/parrot/global.h
==============================================================================
--- trunk/include/parrot/global.h	Thu Jul 23 00:03:47 2009	(r40225)
+++ trunk/include/parrot/global.h	Thu Jul 23 06:51:50 2009	(r40226)
@@ -71,9 +71,10 @@
 PARROT_CAN_RETURN_NULL
 PMC * Parrot_get_namespace_keyed(PARROT_INTERP,
     ARGIN(PMC *base_ns),
-    ARGIN_NULLOK(PMC *pmc_key))
+    ARGIN(PMC *pmc_key))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -95,9 +96,10 @@
 PARROT_CAN_RETURN_NULL
 PMC * Parrot_make_namespace_keyed(PARROT_INTERP,
     ARGIN(PMC *base_ns),
-    ARGIN_NULLOK(PMC *pmc_key))
+    ARGIN(PMC *pmc_key))
         __attribute__nonnull__(1)
-        __attribute__nonnull__(2);
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
 
 PARROT_EXPORT
 PARROT_WARN_UNUSED_RESULT
@@ -158,7 +160,8 @@
        PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_get_namespace_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
-    || PARROT_ASSERT_ARG(base_ns)
+    || PARROT_ASSERT_ARG(base_ns) \
+    || PARROT_ASSERT_ARG(pmc_key)
 #define ASSERT_ARGS_Parrot_get_namespace_keyed_str \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
@@ -168,7 +171,8 @@
        PARROT_ASSERT_ARG(interp)
 #define ASSERT_ARGS_Parrot_make_namespace_keyed __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
-    || PARROT_ASSERT_ARG(base_ns)
+    || PARROT_ASSERT_ARG(base_ns) \
+    || PARROT_ASSERT_ARG(pmc_key)
 #define ASSERT_ARGS_Parrot_make_namespace_keyed_str \
      __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \

Modified: trunk/src/global.c
==============================================================================
--- trunk/src/global.c	Thu Jul 23 00:03:47 2009	(r40225)
+++ trunk/src/global.c	Thu Jul 23 06:51:50 2009	(r40226)
@@ -205,20 +205,15 @@
         PMC *ns = base_ns;
 
         for (i = 0; i < n; ++i) {
-            if (!pmc_key)
-                Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                    "Passed a NULL pmc_key into VTABLE_get_string_keyed_int");
-            else {
-                STRING * const part = VTABLE_get_string_keyed_int(interp, pmc_key, i);
-                PMC *sub_ns = VTABLE_get_pmc_keyed_str(interp, ns, part);
-
-                if (PMC_IS_NULL(sub_ns) || !VTABLE_isa(interp, sub_ns, isans)) {
-                    sub_ns = internal_ns_maybe_create(interp, ns, part, flags);
-                    if (PMC_IS_NULL(sub_ns))
-                        return PMCNULL;
-                }
-                ns = sub_ns;
+            STRING * const part = VTABLE_get_string_keyed_int(interp, pmc_key, i);
+            PMC *sub_ns = VTABLE_get_pmc_keyed_str(interp, ns, part);
+
+            if (PMC_IS_NULL(sub_ns) || !VTABLE_isa(interp, sub_ns, isans)) {
+                sub_ns = internal_ns_maybe_create(interp, ns, part, flags);
+                if (PMC_IS_NULL(sub_ns))
+                    return PMCNULL;
             }
+            ns = sub_ns;
         }
         return ns;
     }
@@ -280,7 +275,7 @@
 PARROT_WARN_UNUSED_RESULT
 PARROT_CAN_RETURN_NULL
 PMC *
-Parrot_get_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns), ARGIN_NULLOK(PMC *pmc_key))
+Parrot_get_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns), ARGIN(PMC *pmc_key))
 {
     ASSERT_ARGS(Parrot_get_namespace_keyed)
     return internal_ns_keyed(interp, base_ns, pmc_key, 0);
@@ -327,7 +322,7 @@
 PARROT_CAN_RETURN_NULL
 PMC *
 Parrot_make_namespace_keyed(PARROT_INTERP, ARGIN(PMC *base_ns),
-        ARGIN_NULLOK(PMC *pmc_key))
+        ARGIN(PMC *pmc_key))
 {
     ASSERT_ARGS(Parrot_make_namespace_keyed)
     return internal_ns_keyed(interp, base_ns, pmc_key, INTERN_NS_CREAT);


More information about the parrot-commits mailing list