diff --git a/libavcodec/mem.c b/libavcodec/mem.c
index 35c83050333bf2d27af25e899ceafb0471925b24..9eaa09ed62dbe4bd860528cc64611e9dd2135262 100644
--- a/libavcodec/mem.c
+++ b/libavcodec/mem.c
@@ -95,7 +95,9 @@ void *av_realloc(void *ptr, unsigned int size)
 {
 #ifdef MEMALIGN_HACK
     //FIXME this isnt aligned correctly though it probably isnt needed
-    int diff= ptr ? ((char*)ptr)[-1] : 0;
+    int diff;
+    if(!ptr) return av_malloc(size);
+    diff= ((char*)ptr)[-1];
     return realloc(ptr - diff, size + diff) + diff;
 #else
     return realloc(ptr, size);