Hi Dimitri, Le 11/04/2018 à 09:02, Dimitri Vorona a écrit : > Hi everybody, > > to continue the discussion in [0]: right now this [1] can happen and the > sliced buffer has no way to foresee or to check against it beforehand. > > I'd suggest to create a new class SlicedBuffer, which would reference the > parent buffer and return it's data() pointer, insted of grabbing the > pointer at creation. We can the parent reference a weak pointer, so the > existing SliceBuffers don't prevent the deallocation (or maybe even have a > separate WeakSliceBuffer class).
AFAIU, the problem only exists with ResizableBuffer? We could do the following: - add a new Buffer member counting the number of exports (default 0) - in SliceBuffer, increment the parent's number of exports - in ~Buffer, decrement the parent's number of exports - in PoolBuffer::Resize(), return an error if the buffer has any exports (this is how Python buffers work, for the record) What do you think? Regards Antoine.