changeset 394:e2cb8a4ee0c5 libavcodec

proper memory handling functions
author glantau
date Sat, 18 May 2002 22:59:50 +0000
parents bf164fce2c14
children 80518daaab05
files utils.c
diffstat 1 files changed, 22 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/utils.c	Sat May 18 22:59:12 2002 +0000
+++ b/utils.c	Sat May 18 22:59:50 2002 +0000
@@ -16,21 +16,15 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include "common.h"
+#include "avcodec.h"
 #include "dsputil.h"
-#include "avcodec.h"
 #include "mpegvideo.h"
 #ifdef HAVE_MALLOC_H
 #include <malloc.h>
-#else
-#include <stdlib.h>
 #endif
 
 /* memory alloc */
-void *av_mallocz(int size)
+void *av_malloc(int size)
 {
     void *ptr;
 #if defined ( ARCH_X86 ) && defined ( HAVE_MEMALIGN )
@@ -53,6 +47,24 @@
     return ptr;
 }
 
+void *av_mallocz(int size)
+{
+    void *ptr;
+    ptr = av_malloc(size);
+    if (!ptr)
+        return NULL;
+    memset(ptr, 0, size);
+    return ptr;
+}
+
+/* NOTE: ptr = NULL is explicetly allowed */
+void av_free(void *ptr)
+{
+    /* XXX: this test should not be needed on most libcs */
+    if (ptr)
+        free(ptr);
+}
+
 /* encoder management */
 AVCodec *first_avcodec;
 
@@ -80,9 +92,7 @@
     }
     ret = avctx->codec->init(avctx);
     if (ret < 0) {
-        if (avctx->priv_data)
-            free(avctx->priv_data);
-        avctx->priv_data = NULL;
+        av_freep(&avctx->priv_data);
         return ret;
     }
     return 0;
@@ -144,8 +154,7 @@
 {
     if (avctx->codec->close)
         avctx->codec->close(avctx);
-    free(avctx->priv_data);
-    avctx->priv_data = NULL;
+    av_freep(&avctx->priv_data);
     avctx->codec = NULL;
     return 0;
 }