diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-10-18 18:54:05 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-10-18 18:54:05 +0000 |
commit | 57281a3170854c12ec574135603fedbbce2cbff7 (patch) | |
tree | 7799d215d322b2b70ba133061ac5568179bd8e4c /libmpcodecs/dec_audio.c | |
parent | 1ec2a1c33f9a846084c9d4286fba7543277e9711 (diff) | |
download | mpv-57281a3170854c12ec574135603fedbbce2cbff7.tar.bz2 mpv-57281a3170854c12ec574135603fedbbce2cbff7.tar.xz |
Use av_malloc/av_free for audio-related buffers to avoid crashes due to
insufficient alignment on systems without memalign.
http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2008-October/058743.html
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27799 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/dec_audio.c')
-rw-r--r-- | libmpcodecs/dec_audio.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/libmpcodecs/dec_audio.c b/libmpcodecs/dec_audio.c index 23f19ac405..947b47bbfc 100644 --- a/libmpcodecs/dec_audio.c +++ b/libmpcodecs/dec_audio.c @@ -74,8 +74,7 @@ static int init_audio_codec(sh_audio_t *sh_audio) sh_audio->a_in_buffer_size = sh_audio->audio_in_minsize; mp_msg(MSGT_DECAUDIO, MSGL_V, MSGTR_AllocatingBytesForInputBuffer, sh_audio->a_in_buffer_size); - sh_audio->a_in_buffer = memalign(16, sh_audio->a_in_buffer_size); - memset(sh_audio->a_in_buffer, 0, sh_audio->a_in_buffer_size); + sh_audio->a_in_buffer = av_mallocz(sh_audio->a_in_buffer_size); sh_audio->a_in_buffer_len = 0; } @@ -84,12 +83,11 @@ static int init_audio_codec(sh_audio_t *sh_audio) mp_msg(MSGT_DECAUDIO, MSGL_V, MSGTR_AllocatingBytesForOutputBuffer, sh_audio->audio_out_minsize, MAX_OUTBURST, sh_audio->a_buffer_size); - sh_audio->a_buffer = memalign(16, sh_audio->a_buffer_size); + sh_audio->a_buffer = av_mallocz(sh_audio->a_buffer_size); if (!sh_audio->a_buffer) { mp_msg(MSGT_DECAUDIO, MSGL_ERR, MSGTR_CantAllocAudioBuf); return 0; } - memset(sh_audio->a_buffer, 0, sh_audio->a_buffer_size); sh_audio->a_buffer_len = 0; if (!sh_audio->ad_driver->init(sh_audio)) { @@ -306,12 +304,8 @@ void uninit_audio(sh_audio_t *sh_audio) free(sh_audio->a_out_buffer); sh_audio->a_out_buffer = NULL; sh_audio->a_out_buffer_size = 0; - if (sh_audio->a_buffer) - free(sh_audio->a_buffer); - sh_audio->a_buffer = NULL; - if (sh_audio->a_in_buffer) - free(sh_audio->a_in_buffer); - sh_audio->a_in_buffer = NULL; + av_freep(&sh_audio->a_buffer); + av_freep(&sh_audio->a_in_buffer); } |