Unittest hangs on completion

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


On 31/12/2016 3:32 PM, David Zhang wrote:
> On Saturday, 31 December 2016 at 02:03:07 UTC, rikki cattermole wrote:
>> 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;
>>         }
>> }
>
> Thanks for your response. So next is never null, and thus there is an
> infinite loop, correct? If so, why does dub indicate that all tests are
> complete?

No, my understand is thus:

  next = current.next;
  theAllocator.dispose(current);

When current is deallocated, current is pointing to free'd memory.
After that point it should be segfaulting when you try to access it *I 
think*.


More information about the Digitalmars-d-learn mailing list