From 579d1a3eca80795316fffe44281d364bdfef2a4b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Sat, 4 Aug 2012 13:37:32 +0100 Subject: [PATCH] buffer, defaultmem: add option to poison memory before freeing it Might be useful to track down certain bugs. --- gst/gstallocator.c | 10 +++++++++- gst/gstbuffer.c | 8 ++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gst/gstallocator.c b/gst/gstallocator.c index 30b73d7..fea534b 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 4269310..385dde6 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 -- 2.7.4