#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