== Quote from dsimcha (dsim...@yahoo.com)'s article
> 8.  The first call to opSlice on a T[new] should set a flag that indicates 
> that
> there may be multiple pointers to the underlying memory block.  Before that 
> flag
> is set, appends to a T[new] should result in calls to GC.free() to free the 
> old
> block whenever it needs to be expanded (since we can guarantee that we own it
> exclusively).  This will help deal with false pointer issues, since D's GC 
> looks
> like it will remain conservative for the foreseeable future.

Scratch this one.  It breaks on the following:

T[new] stuff = somethingThatReturnsTnew();
T* ptrToStuffMemory = &(stuff[8]);
stuff ~= otherStuff;  // May delete memory referred to by ptrToStuffMemory.

Reply via email to