changeset 517:0f5888f9aef7 stable-1.0

Fixed bogus memory deference when SMPEG fails init (thanks, Chris!).
author Ryan C. Gordon <icculus@icculus.org>
date Sun, 29 Oct 2006 07:14:48 +0000
parents c5f184b4b2cd
children 72efeb4643b6
files CHANGELOG CREDITS decoders/smpeg.c
diffstat 3 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGELOG	Sat Oct 28 00:53:45 2006 +0000
+++ b/CHANGELOG	Sun Oct 29 07:14:48 2006 +0000
@@ -2,6 +2,7 @@
  * CHANGELOG.
  */
 
+10292006 - Fixed bogus memory deference when SMPEG fails init (thanks, Chris!)
 10272006 - FLAC 1.1.3 breaks their API _again_, so we try to do the right
            thing at build time. (Thanks, Josh!).
 05122006 - Patched to get mpglib compiling again (thanks, Sam!).
--- a/CREDITS	Sat Oct 28 00:53:45 2006 +0000
+++ b/CREDITS	Sun Oct 29 07:14:48 2006 +0000
@@ -56,6 +56,9 @@
 FLAC 1.1.3 updates:
     Josh Coalson
 
+SMPEG fixes:
+    Chris Nelson
+
 Other stuff:
     Your name here! Patches go to icculus@clutteredmind.org ...
 
--- a/decoders/smpeg.c	Sat Oct 28 00:53:45 2006 +0000
+++ b/decoders/smpeg.c	Sun Oct 29 07:14:48 2006 +0000
@@ -116,6 +116,7 @@
     SDL_AudioSpec spec;
     Sound_SampleInternal *internal = (Sound_SampleInternal *) sample->opaque;
     SDL_RWops *refCounter;
+    const char *err = NULL;
 
     output_version();
 
@@ -171,10 +172,12 @@
     RWops_RWRefCounter_addRef(refCounter);
     smpeg = SMPEG_new_rwops(refCounter, &smpeg_info, 0);
 
-    if (SMPEG_error(smpeg))
+    err = SMPEG_error(smpeg);
+    if (err != NULL)
     {
+        __Sound_SetError(err);  /* make a copy before SMPEG_delete()... */
         SMPEG_delete(smpeg);
-        BAIL_MACRO(SMPEG_error(smpeg), 0);
+        return(0);
     } /* if */
 
     if (!smpeg_info.has_audio)