From 7d42ca98debd0bcfd98c9464fc27bed515f38da0 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Mon, 24 Dec 2012 11:16:47 -0800 Subject: [PATCH] Fix a crash in sceMpegQueryStreamSize(). --- Core/HLE/sceMpeg.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Core/HLE/sceMpeg.cpp b/Core/HLE/sceMpeg.cpp index d6775a69ce..af84637b74 100644 --- a/Core/HLE/sceMpeg.cpp +++ b/Core/HLE/sceMpeg.cpp @@ -236,7 +236,10 @@ void __MpegInit(bool useMediaEngine_) { void __MpegShutdown() { std::map::iterator it, end; for (it = mpegMap.begin(), end = mpegMap.end(); it != end; ++it) + { + delete it->second->mediaengine; delete it->second; + } mpegMap.clear(); } @@ -384,8 +387,12 @@ u32 sceMpegQueryStreamSize(u32 bufferAddr, u32 sizeAddr) DEBUG_LOG(HLE, "sceMpegQueryStreamSize(%08x, %08x)", bufferAddr, sizeAddr); MpegContext temp; + temp.mediaengine = new MediaEngine(); + AnalyzeMpeg(bufferAddr, &temp); + delete temp.mediaengine; + if (temp.mpegMagic != PSMF_MAGIC) { ERROR_LOG(HLE, "sceMpegQueryStreamOffset: Bad PSMF magic"); return ERROR_MPEG_INVALID_VALUE;