mciavi32: Propely handle Heap[Re]Alloc failure.

Kirill Smirnov kirill.k.smirnov at gmail.com
Sun May 8 11:15:23 CDT 2016


Signed-off-by: Kirill K. Smirnov <kirill.k.smirnov at gmail.com>
---
   dlls/mciavi32/mmoutput.c | 18 ++++++++++--------
   1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/dlls/mciavi32/mmoutput.c b/dlls/mciavi32/mmoutput.c
index d3badb6..c932ab4 100644
--- a/dlls/mciavi32/mmoutput.c
+++ b/dlls/mciavi32/mmoutput.c
@@ -229,14 +229,16 @@ static BOOL       MCIAVI_AddFrame(WINE_MCIAVI* wma, LPMMCKINFO mmck,
                alb->numAudioBlocks, mmck->cksize);
          if (wma->lpWaveFormat) {
              if (alb->numAudioBlocks >= alb->numAudioAllocated) {
-               alb->numAudioAllocated += 32;
-               if (!wma->lpAudioIndex)
-                   wma->lpAudioIndex = HeapAlloc(GetProcessHeap(), 0,
-                                                 alb->numAudioAllocated * sizeof(struct MMIOPos));
-               else
-                   wma->lpAudioIndex = HeapReAlloc(GetProcessHeap(), 0, wma->lpAudioIndex,
-                                                   alb->numAudioAllocated * sizeof(struct MMIOPos));
-               if (!wma->lpAudioIndex) return FALSE;
+                DWORD newsize = alb->numAudioAllocated + 32;
+                struct MMIOPos* newindex;
+
+                if (!wma->lpAudioIndex)
+                    newindex = HeapAlloc(GetProcessHeap(), 0, newsize * sizeof(struct MMIOPos));
+                else
+                    newindex = HeapReAlloc(GetProcessHeap(), 0, wma->lpAudioIndex, newsize * sizeof(struct MMIOPos));
+                if (!newindex) return FALSE;
+                alb->numAudioAllocated = newsize;
+                wma->lpAudioIndex = newindex;
              }
              wma->lpAudioIndex[alb->numAudioBlocks].dwOffset = mmck->dwDataOffset;
              wma->lpAudioIndex[alb->numAudioBlocks].dwSize = mmck->cksize;
-- 
2.8.2



More information about the wine-patches mailing list