From edf70bdc965370b4e0a6eec56803b74fa92a8663 Mon Sep 17 00:00:00 2001 From: Zhang Rui Date: Thu, 27 Jun 2013 22:39:22 +0800 Subject: [PATCH] ijkutil: add mallocz and freep --- .../jni/ijksdl/android/android_audiotrack.c | 3 +-- .../jni/ijksdl/ijksdl_aout_internal.h | 11 +++++------ ijkmediaplayer/jni/ijksdl/ijksdl_mutex.c | 5 +++-- .../jni/ijksdl/ijksdl_vout_internal.h | 12 ++++-------- ijkmediaplayer/jni/ijkutil/ijkutil.h | 18 ++++++++++++++++++ 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/ijkmediaplayer/jni/ijksdl/android/android_audiotrack.c b/ijkmediaplayer/jni/ijksdl/android/android_audiotrack.c index b8fc28d8..89164a4a 100644 --- a/ijkmediaplayer/jni/ijksdl/android/android_audiotrack.c +++ b/ijkmediaplayer/jni/ijksdl/android/android_audiotrack.c @@ -231,13 +231,12 @@ SDL_AndroidAudioTrack *sdl_audiotrack_new_from_spec(JNIEnv *env, SDL_AndroidAudi return NULL; } - SDL_AndroidAudioTrack *atrack = (SDL_AndroidAudioTrack*) malloc(sizeof(SDL_AndroidAudioTrack)); + SDL_AndroidAudioTrack *atrack = (SDL_AndroidAudioTrack*) mallocz(sizeof(SDL_AndroidAudioTrack)); if (!atrack) { (*env)->CallVoidMethod(env, g_clazz.clazz, atrack->thiz, g_clazz.release); (*env)->DeleteLocalRef(env, thiz); return NULL; } - memset(atrack, 0, sizeof(SDL_AndroidAudioTrack)); atrack->spec = *spec; atrack->min_buffer_size = min_buffer_size; diff --git a/ijkmediaplayer/jni/ijksdl/ijksdl_aout_internal.h b/ijkmediaplayer/jni/ijksdl/ijksdl_aout_internal.h index d27f0f8a..f72d69ff 100644 --- a/ijkmediaplayer/jni/ijksdl/ijksdl_aout_internal.h +++ b/ijkmediaplayer/jni/ijksdl/ijksdl_aout_internal.h @@ -29,22 +29,21 @@ inline static SDL_Aout *SDL_Aout_CreateInternal(size_t opaque_size) { - SDL_Aout *aout = (SDL_Aout*) malloc(sizeof(SDL_Aout)); + // FIXME: mallocz; + SDL_Aout *aout = (SDL_Aout*) mallocz(sizeof(SDL_Aout)); if (!aout) return NULL; - memset(aout, 0, sizeof(SDL_Aout)); - aout->opaque = malloc(opaque_size); + aout->opaque = mallocz(opaque_size); if (!aout->opaque) { free(aout); return NULL; } - memset(aout->opaque, 0, sizeof(aout->opaque)); aout->mutex = SDL_CreateMutex(); if (aout->mutex == NULL) { - free(aout->opaque); - free(aout); + freep(aout->opaque); + freep(aout); return NULL; } diff --git a/ijkmediaplayer/jni/ijksdl/ijksdl_mutex.c b/ijkmediaplayer/jni/ijksdl/ijksdl_mutex.c index d39b2965..6c5d5a08 100644 --- a/ijkmediaplayer/jni/ijksdl/ijksdl_mutex.c +++ b/ijkmediaplayer/jni/ijksdl/ijksdl_mutex.c @@ -24,11 +24,12 @@ #include "ijksdl_mutex.h" #include #include +#include "ijksdl_inc_internal.h" SDL_mutex *SDL_CreateMutex(void) { SDL_mutex *mutex; - mutex = (SDL_mutex *) malloc(sizeof(SDL_mutex)); + mutex = (SDL_mutex *) mallocz(sizeof(SDL_mutex)); if (!mutex) return NULL; @@ -68,7 +69,7 @@ int SDL_UnlockMutex(SDL_mutex *mutex) SDL_cond *SDL_CreateCond(void) { SDL_cond *cond; - cond = (SDL_cond *) malloc(sizeof(SDL_cond)); + cond = (SDL_cond *) mallocz(sizeof(SDL_cond)); if (!cond) return NULL; diff --git a/ijkmediaplayer/jni/ijksdl/ijksdl_vout_internal.h b/ijkmediaplayer/jni/ijksdl/ijksdl_vout_internal.h index 579d9d3b..5138c6a2 100644 --- a/ijkmediaplayer/jni/ijksdl/ijksdl_vout_internal.h +++ b/ijkmediaplayer/jni/ijksdl/ijksdl_vout_internal.h @@ -28,17 +28,15 @@ inline static SDL_Vout *SDL_Vout_CreateInternal(size_t opaque_size) { - SDL_Vout *vout = (SDL_Vout*) malloc(sizeof(SDL_Vout)); + SDL_Vout *vout = (SDL_Vout*) mallocz(sizeof(SDL_Vout)); if (!vout) return NULL; - memset(vout, 0, sizeof(SDL_Vout)); - vout->opaque = malloc(opaque_size); + vout->opaque = mallocz(opaque_size); if (!vout->opaque) { free(vout); return NULL; } - memset(vout->opaque, 0, opaque_size); vout->mutex = SDL_CreateMutex(); if (vout->mutex == NULL) { @@ -66,17 +64,15 @@ inline static void SDL_Vout_FreeInternal(SDL_Vout *vout) inline static SDL_VoutOverlay *SDL_VoutOverlay_CreateInternal(size_t opaque_size) { - SDL_VoutOverlay *overlay = (SDL_VoutOverlay*) malloc(sizeof(SDL_VoutOverlay)); + SDL_VoutOverlay *overlay = (SDL_VoutOverlay*) mallocz(sizeof(SDL_VoutOverlay)); if (!overlay) return NULL; - memset(overlay, 0, sizeof(SDL_VoutOverlay)); - overlay->opaque = malloc(opaque_size); + overlay->opaque = mallocz(opaque_size); if (!overlay->opaque) { free(overlay); return NULL; } - memset(overlay->opaque, 0, opaque_size); return overlay; } diff --git a/ijkmediaplayer/jni/ijkutil/ijkutil.h b/ijkmediaplayer/jni/ijkutil/ijkutil.h index fe1c8b83..f03b6f45 100644 --- a/ijkmediaplayer/jni/ijkutil/ijkutil.h +++ b/ijkmediaplayer/jni/ijkutil/ijkutil.h @@ -44,4 +44,22 @@ return (retval__); \ } +inline void *mallocz(size_t size) +{ + void *mem = malloc(size); + if (!mem) + return mem; + + memset(mem, 0, size); + return mem; +} + +inline void freep(void **mem) +{ + if (mem && *mem) { + free(*mem); + *mem = NULL; + } +} + #endif -- GitLab