| 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);
|
|
|