Index: core/src/fxge/win32/fx_win32_gdipext.cpp |
diff --git a/core/src/fxge/win32/fx_win32_gdipext.cpp b/core/src/fxge/win32/fx_win32_gdipext.cpp |
index e668b492002467e1f267d0044e7becd60e3cfcd9..9dcfe3a7a6be25658821f90700ae595735922c8f 100644 |
--- a/core/src/fxge/win32/fx_win32_gdipext.cpp |
+++ b/core/src/fxge/win32/fx_win32_gdipext.cpp |
@@ -1272,16 +1272,14 @@ CFX_DIBitmap* CGdiplusExt::LoadDIBitmap(WINDIB_Open_Args_ args) |
int height = abs(pInfo->pbmi->bmiHeader.biHeight); |
int width = pInfo->pbmi->bmiHeader.biWidth; |
int dest_pitch = (width * pInfo->pbmi->bmiHeader.biBitCount + 31) / 32 * 4; |
- LPBYTE pData = FX_Alloc(BYTE, dest_pitch * height); |
- if (pData == NULL) { |
- FreeDIBitmap(pInfo); |
- return NULL; |
- } |
+ LPBYTE pData = FX_Alloc2D(BYTE, dest_pitch, height); |
if (dest_pitch == pInfo->Stride) { |
FXSYS_memcpy32(pData, pInfo->pScan0, dest_pitch * height); |
- } else for (int i = 0; i < height; i ++) { |
+ } else { |
+ for (int i = 0; i < height; i ++) { |
FXSYS_memcpy32(pData + dest_pitch * i, pInfo->pScan0 + pInfo->Stride * i, dest_pitch); |
} |
+ } |
CFX_DIBitmap* pDIBitmap = _FX_WindowsDIB_LoadFromBuf(pInfo->pbmi, pData, pInfo->pbmi->bmiHeader.biBitCount == 32); |
FX_Free(pData); |
FreeDIBitmap(pInfo); |