I'm having a problem with a mapping lookup on the C level. The index is a string, and even though I know that the mapping that contains the string I want, I get a null value.
I did a little looking, and it appears that even though the lookup occurrs on two pike strings of the same length and same characters, they aren't the same strings. I'm assuming that this is the reason the search is failing, but I can't imagine why they're not the same string. I've confirmed that the source strings have the same character values, and it looks like the hash value is the same.
Any ideas what I'm doing wrong?
Bill
(gdb) print /a classname $3 = 0x1849c20 (gdb) print *classname $4 = { refs = 3, flags = 4, size_shift = 0, len = 10, hval = 2550908153, next = 0x1128990, str = "N" }
(gdb) print /a classname $5 = 0x184afd4 (gdb) print *classname $6 = { refs = 1, flags = 4, size_shift = 0, len = 10, hval = 2550908153, next = 0x1128990, str = "N" }
If indeed the contents of str (only one of the 10 characters is shown in your example) are the same, than the handling of these strings are buggy, not the mapping indexing itself. Perhaps the contents of str is changed after it has been created?
pike-devel@lists.lysator.liu.se