[svn:parrot] r40815 - trunk/src

NotFound at svn.parrot.org NotFound at svn.parrot.org
Wed Aug 26 06:49:07 UTC 2009


Author: NotFound
Date: Wed Aug 26 06:49:06 2009
New Revision: 40815
URL: https://trac.parrot.org/parrot/changeset/40815

Log:
[core] fix an attribute handling issue

Modified:
   trunk/src/pmc.c

Modified: trunk/src/pmc.c
==============================================================================
--- trunk/src/pmc.c	Wed Aug 26 06:37:06 2009	(r40814)
+++ trunk/src/pmc.c	Wed Aug 26 06:49:06 2009	(r40815)
@@ -222,11 +222,6 @@
     if (PObj_active_destroy_TEST(pmc))
         VTABLE_destroy(interp, pmc);
 
-    PObj_flags_SETTO(pmc, PObj_is_PMC_FLAG | new_flags);
-
-    /* Set the right vtable */
-    pmc->vtable = new_vtable;
-
     if (PMC_data(pmc) && pmc->vtable->attr_size) {
 #if GC_USE_FIXED_SIZE_ALLOCATOR
         Parrot_gc_free_pmc_attributes(interp, pmc, pmc->vtable->attr_size);
@@ -235,9 +230,14 @@
 #endif
     }
 
+    PObj_flags_SETTO(pmc, PObj_is_PMC_FLAG | new_flags);
+
+    /* Set the right vtable */
+    pmc->vtable = new_vtable;
+
     if (new_vtable->attr_size) {
 #if GC_USE_FIXED_SIZE_ALLOCATOR
-        Parrot_gc_allocate_pmc_attributes(interp, pmc, pmc->vtable->attr_size);
+        Parrot_gc_allocate_pmc_attributes(interp, pmc, new_vtable->attr_size);
 #else
         PMC_data(pmc) = mem_sys_allocate_zeroed(new_vtable->attr_size);
 #endif


More information about the parrot-commits mailing list