#276: t/dynpmc/foo fails
--------------------+-------------------------------------------------------
 Reporter:  kjs     |       Owner:        
     Type:  bug     |      Status:  new   
 Priority:  normal  |   Milestone:        
Component:  core    |     Version:  trunk 
 Severity:  medium  |    Keywords:  dynpmc
     Lang:          |       Patch:        
 Platform:  win32   |  
--------------------+-------------------------------------------------------

Comment(by rurban):

 The missing encoding in the dll is fixed by either re-registering it on
 WIN32 only (my patch above) or by http://nopaste.snit.ch/15529 +
 http://nopaste.snit.ch/15530
 (moving the encoding and charset from global to interp).

 But the remaining problem is Parrot_Null_get_integer(), and it
 is caused by a failing PMC_IS_NULL pointer comparison.

 {{{
 (gdb) up
 #1  0x687440c7 in pmc_type (interp=0x3d25e0, name=0xe04098) at
 src/pmc.c:596
 596             if (!PMC_IS_NULL(interp, item))
 (gdb) p item
 $5 = (PMC * const) 0xdbe458
 (gdb) p PMCNULL
 $6 = (PMC *) 0xdbe458
 }}}

 On mingw and probably MSVC this comparison is false, elsewhere true.

 I've also tried the function PMC_is_null, ditto.
 The disassembly is weird, but I suppose the problem is caused by consting
 the Parrot_Null vtable pointers, where the compiler marks const pointers
 to be likely in a different segment (though they are not).

 I'm now trying to const PMCNULL, as it seems to be the right thing.

-- 
Ticket URL: <https://trac.parrot.org/parrot/ticket/276#comment:5>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets

Reply via email to