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