Unittest hangs on completion

rikki cattermole via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Dec 30 18:03:07 PST 2016


On 31/12/2016 2:52 PM, David Zhang wrote:
> Extracting everything into a main() also causes the application to hang.
>
> ie:
>
> struct S
> {
>     S* next;
> }
>
> S* _foo;
> foreach (e; 0 .. 10)
>     _foo = theAllocator.make!S(_foo);
>
> S* next, current;
> next = current = _foo;
> while (next)
> {
>     next = current.next;
>     theAllocator.dispose(current);
> }
>
>

As it should, current is never reassigned.
You only need one var, next. Of course I didn't read the entire thread 
chain so, I'm probably missing something.

import std.experimental.allocator;

void main() {
         struct S { S* next; }
         S* _foo;
         foreach (e; 0 .. 10)
                 _foo = theAllocator.make!S(_foo);
         S* next;

         next = _foo;
         while(next !is null) {
                 auto nextT = next.next;
                 theAllocator.dispose(next);
                 next = nextT;
         }
}


More information about the Digitalmars-d-learn mailing list