11/*
22MP3 audio decoder. Choice of public domain or MIT-0. See license statements at the end of this file.
3- dr_mp3 - v0.7.2 - 2025-12-02
3+ dr_mp3 - v0.7.3 - 2026-01-17
44
55David Reid - mackron@gmail.com
66
@@ -72,7 +72,7 @@ extern "C" {
7272
7373#define DRMP3_VERSION_MAJOR 0
7474#define DRMP3_VERSION_MINOR 7
75- #define DRMP3_VERSION_REVISION 2
75+ #define DRMP3_VERSION_REVISION 3
7676#define DRMP3_VERSION_STRING DRMP3_XSTRINGIFY(DRMP3_VERSION_MAJOR) "." DRMP3_XSTRINGIFY(DRMP3_VERSION_MINOR) "." DRMP3_XSTRINGIFY(DRMP3_VERSION_REVISION)
7777
7878#include <stddef.h> /* For size_t. */
@@ -3170,7 +3170,6 @@ static drmp3_bool32 drmp3_init_internal(drmp3* pMP3, drmp3_read_proc onRead, drm
31703170 {
31713171 drmp3_bs bs ;
31723172 drmp3_L3_gr_info grInfo [4 ];
3173- const drmp3_uint8 * pTagData = pFirstFrameData ;
31743173
31753174 drmp3_bs_init (& bs , pFirstFrameData + DRMP3_HDR_SIZE , firstFrameInfo .frame_bytes - DRMP3_HDR_SIZE );
31763175
@@ -3181,6 +3180,7 @@ static drmp3_bool32 drmp3_init_internal(drmp3* pMP3, drmp3_read_proc onRead, drm
31813180 if (drmp3_L3_read_side_info (& bs , grInfo , pFirstFrameData ) >= 0 ) {
31823181 drmp3_bool32 isXing = DRMP3_FALSE ;
31833182 drmp3_bool32 isInfo = DRMP3_FALSE ;
3183+ const drmp3_uint8 * pTagData ;
31843184 const drmp3_uint8 * pTagDataBeg ;
31853185
31863186 pTagDataBeg = pFirstFrameData + DRMP3_HDR_SIZE + (bs .pos /8 );
@@ -3331,8 +3331,6 @@ static drmp3_bool32 drmp3__on_seek_memory(void* pUserData, int byteOffset, drmp3
33313331
33323332 DRMP3_ASSERT (pMP3 != NULL );
33333333
3334- newCursor = pMP3 -> memory .currentReadPos ;
3335-
33363334 if (origin == DRMP3_SEEK_SET ) {
33373335 newCursor = 0 ;
33383336 } else if (origin == DRMP3_SEEK_CUR ) {
@@ -4804,6 +4802,8 @@ static float* drmp3__full_read_and_close_f32(drmp3* pMP3, drmp3_config* pConfig,
48044802 pNewFrames = (float * )drmp3__realloc_from_callbacks (pFrames , (size_t )newFramesBufferSize , (size_t )oldFramesBufferSize , & pMP3 -> allocationCallbacks );
48054803 if (pNewFrames == NULL ) {
48064804 drmp3__free_from_callbacks (pFrames , & pMP3 -> allocationCallbacks );
4805+ pFrames = NULL ;
4806+ totalFramesRead = 0 ;
48074807 break ;
48084808 }
48094809
@@ -4871,6 +4871,8 @@ static drmp3_int16* drmp3__full_read_and_close_s16(drmp3* pMP3, drmp3_config* pC
48714871 pNewFrames = (drmp3_int16 * )drmp3__realloc_from_callbacks (pFrames , (size_t )newFramesBufferSize , (size_t )oldFramesBufferSize , & pMP3 -> allocationCallbacks );
48724872 if (pNewFrames == NULL ) {
48734873 drmp3__free_from_callbacks (pFrames , & pMP3 -> allocationCallbacks );
4874+ pFrames = NULL ;
4875+ totalFramesRead = 0 ;
48744876 break ;
48754877 }
48764878
@@ -5005,6 +5007,10 @@ DIFFERENCES BETWEEN minimp3 AND dr_mp3
50055007/*
50065008REVISION HISTORY
50075009================
5010+ v0.7.3 - 2026-01-17
5011+ - Fix an error in drmp3_open_and_read_pcm_frames_s16() and family when memory allocation fails.
5012+ - Fix some compilation warnings.
5013+
50085014v0.7.2 - 2025-12-02
50095015 - Reduce stack space to improve robustness on embedded systems.
50105016 - Fix a compilation error with MSVC Clang toolset relating to cpuid.
0 commit comments