dmd/src/phobos/std/string.d dosyasındaki şu satır:
if (i1 == s1.length) return s2.length - i2;
şöyle olmalı:
if (i1 == s1.length) return i2 - s2.length;
Yoksa uzunlukları nedeniyle farklı çıkmaları gereken farklı türden dizgilerde sonuç hatalı çıkabiliyor. Şu program ilk assert'te takılıyor:
import std.cstream;
import std.string;
int benim_cmp(C1, C2)(in C1[] s1, in C2[] s2)
{
return cmp(s1, s2);
}
unittest
{
assert(benim_cmp("aa", "aaa"d) < 0);
assert(benim_cmp("aaa", "aa"d) > 0);
assert(benim_cmp("aa", "aa"d) == 0);
}
void main()
{}
Aynı dosyadaki icmp fonksiyonu doğru...
Şu hatayı açtım:
http://d.puremagic.com/issues/show_bug.cgi?id=3355
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]