Changeset 655

Show
Ignore:
Timestamp:
03/07/08 02:25:35 (4 months ago)
Author:
braddr
Message:

Merge r561 from trunk to branch/phobos-1.x: Fix out contract of toStringz

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/phobos-1.x/phobos/std/string.d

    r295 r655  
    215215    { 
    216216    if (result) 
    217     {   assert(strlen(result) == s.length); 
    218         assert(memcmp(result, s.ptr, s.length) == 0); 
     217    { 
     218        auto slen = s.length; 
     219        while (slen > 0 && s[slen-1] == '\0') --slen; 
     220        assert(strlen(result) == slen); 
     221        assert(memcmp(result, s.ptr, slen) == 0); 
    219222    } 
    220223    } 
     
    261264    p = toStringz(test); 
    262265    assert(*p == 0); 
     266 
     267    test = "\0"; 
     268    p = toStringz(test); 
     269    assert(*p == 0); 
     270 
     271    test = "foo\0"; 
     272    p = toStringz(test); 
     273    assert(p[0] == 'f' && p[1] == 'o' && p[2] == 'o' && p[3] == 0); 
    263274} 
    264275