Author: jonathan
Date: Tue Jul 29 09:15:32 2008
New Revision: 29849

Modified:
   trunk/src/pmc/class.pmc

Log:
[core] Fix RT #56650 (class created from namespace fails MMD).

Modified: trunk/src/pmc/class.pmc
==============================================================================
--- trunk/src/pmc/class.pmc     (original)
+++ trunk/src/pmc/class.pmc     Tue Jul 29 09:15:32 2008
@@ -486,7 +486,7 @@
     }
 
     VTABLE void init_pmc(PMC *init_data) {
-        PMC           *arg;
+        PMC           *arg, *ns_name;
         const INTVAL   arg_type = VTABLE_type(interp, init_data);
         STRING * const name_str = CONST_STRING(interp, "name");
 
@@ -497,12 +497,19 @@
         switch (arg_type) {
             case enum_class_String:
             case enum_class_Key:
-            case enum_class_NameSpace:
             case enum_class_ResizableStringArray:
                 arg = pmc_new(interp, enum_class_Hash);
                 VTABLE_set_pmc_keyed_str(interp, arg, name_str, init_data);
                 break;
 
+            case enum_class_NameSpace:
+                arg = pmc_new(interp, enum_class_Hash);
+                Parrot_PCCINVOKE(interp, init_data, CONST_STRING(interp, 
"get_name"),
+                    "->P", &ns_name);
+                VTABLE_shift_string(interp, ns_name); /* strip HLL name */
+                VTABLE_set_pmc_keyed_str(interp, arg, name_str, ns_name);
+                break;
+
             case enum_class_Hash:
                 arg = init_data;
                 break;

Reply via email to