diff --git a/gst/gstallocator.c b/gst/gstallocator.c index 30b73d7727..fea534b653 100644 --- a/gst/gstallocator.c +++ b/gst/gstallocator.c @@ -517,11 +517,19 @@ static void default_free (GstAllocator * allocator, GstMemory * mem) { GstMemoryDefault *dmem = (GstMemoryDefault *) mem; + gsize slice_size; if (dmem->notify) dmem->notify (dmem->user_data); - g_slice_free1 (dmem->slice_size, mem); + slice_size = dmem->slice_size; + +#ifdef USE_POISONING + /* just poison the structs, not all the data */ + memset (mem, 0xff, sizeof (GstMemoryDefault)); +#endif + + g_slice_free1 (slice_size, mem); } static void diff --git a/gst/gstbuffer.c b/gst/gstbuffer.c index 42693102a7..385dde6ed8 100644 --- a/gst/gstbuffer.c +++ b/gst/gstbuffer.c @@ -532,10 +532,14 @@ _gst_buffer_free (GstBuffer * buffer) } /* we set msize to 0 when the buffer is part of the memory block */ - if (msize) + if (msize) { +#ifdef USE_POISONING + memset (buffer, 0xff, msize); +#endif g_slice_free1 (msize, buffer); - else + } else { gst_memory_unref (GST_BUFFER_BUFMEM (buffer)); + } } static void