std.array string.split("") bug

H. S. Teoh hsteoh at quickfur.ath.cx
Wed Aug 7 13:42:13 PDT 2013


On Wed, Aug 07, 2013 at 10:39:11PM +0200, John Colvin wrote:
> On Wednesday, 7 August 2013 at 19:10:11 UTC, Borislav Kosharov
> wrote:
> >Something strange happens when I do this:
> >
> >unittest {
> >    import std.array, std.string;
> >    string s = "test";
> >    //assert(s.toUpper.split("").join("-") == "T-E-S-T");
> >    //"Memory allocation failed"
> >    //[Finished in 26.5s]
> >    //CPU: 1% -> 50% | 2.7GHz dual core
> >    //RAM: 1.6GB -> 2.6GB | 1GB diff
> >    assert(s.split("") == ["t","e","s","t"]);
> >    //ditto
> >}
> >
> >I just want to achieve what the commented assert's result should
> >be. Is there a better way to do that? And if it is really a bug
> >where should I report it?
> 
> It's a bug in std.algorithm.splitter
> 
> popFront doesn't actually pop anything at all when the separator is
> a "", so it just keeps iterating forever.

Not only so, .front doesn't return the first character either. I'm
looking into the code to see if I can fix it...


T

-- 
The two rules of success: 1. Don't tell everything you know. -- YHL


More information about the Digitalmars-d mailing list