std.string.split is broken :( (Re: DMD 1.001 release)
Lionello Lunesu
lio at lunesu.remove.com
Wed Jan 24 07:56:47 PST 2007
Something's definitely broken:
auto f = std.string.split(r,"\t");
00405DC5 FF 75 C4 push dword ptr [ebp-3Ch]
00405DC8 FF 75 C0 push dword ptr [r]
00405DCB FF 35 44 ED 43 00 push dword ptr
[D24TypeInfo_AT5table6Record6__initZ+34h (43ED44h)]
00405DD1 FF 35 40 ED 43 00 push dword ptr
[D24TypeInfo_AT5table6Record6__initZ+30h (43ED40h)]
00405DD7 E8 20 67 00 00 call (40C4FCh)
The second pair of pushes do not refer to that string constant!
The memory at 0x0043ED40 contains "s.taskdb", an arbitrary piece of a
longer string:
.taskdb.TaskInfo.taskdb.TaskStatus.taskdb.TaskUpdate.taskdb.TaskDB.
("taskdb" is the module name. The other four are resp. struct, enum,
struct, interface.)
To ensure that that memory did not get overwritten, I've inspected the
memory at program startup, _main (C's main!) so before any static
constructors.
L.
More information about the Digitalmars-d-announce
mailing list