std.array string.split("") bug

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


On Wed, Aug 07, 2013 at 01:42:13PM -0700, H. S. Teoh wrote:
> 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...
[...]

Fixed:

https://github.com/D-Programming-Language/phobos/pull/1456


T

-- 
Being able to learn is a great learning; being able to unlearn is a greater learning.


More information about the Digitalmars-d mailing list