# New Ticket Created by  NotFound 
# Please include the string:  [perl #53890]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=53890 >


Last night in #parrot particle informed of a bug in a msvc++ build. By
his suggestion, me and others were able to reproduce it in other
platforms by using the gcdebug core:

./parrot --runcore=gcdebug t/pmc/orderedhash_9.pasm

Looks like the problem is that parrot_mark_hash in hash.c expects that
buckets always contains a valid key, but DESCRIPTION in
orderedhash.pmc says:

C<delete_keyed> never removes items; they are just nulled.

The problem can be fixed by checking in parrot_mark_hash that the key
is no null before calling pobject_lives. The attached path does it.

-- 
Salu2
Index: src/hash.c
===================================================================
--- src/hash.c	(revisión: 27391)
+++ src/hash.c	(copia de trabajo)
@@ -337,7 +337,7 @@
                         "Detected hash corruption at hash %p entries %d",
                         hash, (int)entries);
 
-            if (mark_key)
+            if (mark_key && bucket->key)
                 pobject_lives(interp, (PObj *)bucket->key);
 
             if (mark_value)

Reply via email to