On Thu, 10 Mar 2011 07:50:21 -0500, bearophile <bearophileh...@lycos.com> wrote:

Magnus Lie Hetland:

Derp. I didn't mean bool -- I was talking about byte. (Which should
make quite a bit more sense, given that I'm talking about a limit of
256... :D)

Please show a complete minimal program that gives you problem. (I have failed to reproduce your problem on Windows).


void main()
{
    auto a = new ubyte[256];
    foreach(ubyte i, ref e; a) e = i;
}

I think you should file this as a bug Magnus, I see no reason why this should result in an infinite loop.

Probably the reason is because the compiler rewrites this as:

for(ubyte i = 0; i < a.length; i++)

where what it should do is:

for(size_t _i = 0; _i < a.length; _i++)
{
    auto i = cast(ubyte) _i;
    ...
}

or just fail to compile if you use anything that can't hold a size_t as an index type.

-Steve

Reply via email to