| Index: core/src/fxge/dib/fx_dib_composite.cpp
|
| diff --git a/core/src/fxge/dib/fx_dib_composite.cpp b/core/src/fxge/dib/fx_dib_composite.cpp
|
| index e385bc9ffeff3e0d665406e23c1fcbbcfd98c10b..ae72fc5a43969908d552a936efa4d268426cf5e1 100644
|
| --- a/core/src/fxge/dib/fx_dib_composite.cpp
|
| +++ b/core/src/fxge/dib/fx_dib_composite.cpp
|
| @@ -3601,6 +3601,9 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, FXDIB
|
| if ((dest_format & 0xff) == 8) {
|
| int pal_count = 1 << (src_format & 0xff);
|
| FX_LPBYTE gray_pal = FX_Alloc(FX_BYTE, pal_count);
|
| + if (!gray_pal) {
|
| + return;
|
| + }
|
| pDestPalette = (FX_DWORD*)gray_pal;
|
| for (int i = 0; i < pal_count; i ++) {
|
| FX_DWORD color = isSrcCmyk ? FXCMYK_TODIB(pSrcPalette[i]) : FXARGB_TODIB(pSrcPalette[i]);
|
| @@ -3610,6 +3613,9 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, FXDIB
|
| } else {
|
| int palsize = 1 << (src_format & 0xff);
|
| pDestPalette = FX_Alloc(FX_DWORD, palsize);
|
| + if (!pDestPalette) {
|
| + return;
|
| + }
|
| for (int i = 0; i < palsize; i ++) {
|
| FX_DWORD color = isSrcCmyk ? FXCMYK_TODIB(pSrcPalette[i]) : FXARGB_TODIB(pSrcPalette[i]);
|
| pIccModule->TranslateScanline(pIccTransform, (FX_LPBYTE)&color, (FX_LPCBYTE)&color, 1);
|
| @@ -3619,6 +3625,9 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, FXDIB
|
| } else {
|
| int pal_count = 1 << (src_format & 0xff);
|
| FX_LPBYTE gray_pal = FX_Alloc(FX_BYTE, pal_count);
|
| + if (!gray_pal) {
|
| + return;
|
| + }
|
| if (pal_count == 2) {
|
| gray_pal[0] = 0;
|
| gray_pal[1] = 255;
|
| @@ -3632,6 +3641,10 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, FXDIB
|
| pDestPalette = (FX_DWORD*)gray_pal;
|
| } else {
|
| pDestPalette = FX_Alloc(FX_DWORD, pal_count);
|
| + if (!pDestPalette) {
|
| + FX_Free(gray_pal);
|
| + return;
|
| + }
|
| for (int i = 0; i < pal_count; i ++) {
|
| pIccModule->TranslateScanline(pIccTransform, (FX_LPBYTE)&pDestPalette[i], &gray_pal[i], 1);
|
| pDestPalette[i] = isDstCmyk ? FXCMYK_TODIB(pDestPalette[i]) : FXARGB_TODIB(pDestPalette[i]);
|
| @@ -3644,6 +3657,9 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, FXDIB
|
| if ((dest_format & 0xff) == 8) {
|
| int pal_count = 1 << (src_format & 0xff);
|
| FX_LPBYTE gray_pal = FX_Alloc(FX_BYTE, pal_count);
|
| + if (!gray_pal) {
|
| + return;
|
| + }
|
| pDestPalette = (FX_DWORD*)gray_pal;
|
| if (isSrcCmyk) {
|
| for (int i = 0; i < pal_count; i ++) {
|
| @@ -3661,6 +3677,9 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, FXDIB
|
| } else {
|
| int palsize = 1 << (src_format & 0xff);
|
| pDestPalette = FX_Alloc(FX_DWORD, palsize);
|
| + if (!pDestPalette) {
|
| + return;
|
| + }
|
| if (isDstCmyk == isSrcCmyk) {
|
| FXSYS_memcpy32(pDestPalette, pSrcPalette, palsize * sizeof(FX_DWORD));
|
| } else {
|
| @@ -3677,6 +3696,9 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, FXDIB
|
| if ((dest_format & 0xff) == 8) {
|
| int pal_count = 1 << (src_format & 0xff);
|
| FX_LPBYTE gray_pal = FX_Alloc(FX_BYTE, pal_count);
|
| + if (!gray_pal) {
|
| + return;
|
| + }
|
| if (pal_count == 2) {
|
| gray_pal[0] = 0;
|
| gray_pal[1] = 255;
|
| @@ -3689,6 +3711,9 @@ inline void _ScanlineCompositor_InitSourcePalette(FXDIB_Format src_format, FXDIB
|
| } else {
|
| int palsize = 1 << (src_format & 0xff);
|
| pDestPalette = FX_Alloc(FX_DWORD, palsize);
|
| + if (!pDestPalette) {
|
| + return;
|
| + }
|
| if (palsize == 2) {
|
| pDestPalette[0] = isSrcCmyk ? 255 : 0xff000000;
|
| pDestPalette[1] = isSrcCmyk ? 0 : 0xffffffff;
|
| @@ -4438,13 +4463,25 @@ FX_BOOL CFX_BitmapComposer::SetInfo(int width, int height, FXDIB_Format src_form
|
| }
|
| if (m_bVertical) {
|
| m_pScanlineV = FX_Alloc(FX_BYTE, m_pBitmap->GetBPP() / 8 * width + 4);
|
| + if (!m_pScanlineV) {
|
| + return FALSE;
|
| + }
|
| m_pClipScanV = FX_Alloc(FX_BYTE, m_pBitmap->GetHeight());
|
| + if (!m_pClipScanV) {
|
| + return FALSE;
|
| + }
|
| if (m_pBitmap->m_pAlphaMask) {
|
| m_pScanlineAlphaV = FX_Alloc(FX_BYTE, width + 4);
|
| + if (!m_pScanlineAlphaV) {
|
| + return FALSE;
|
| + }
|
| }
|
| }
|
| if (m_BitmapAlpha < 255) {
|
| m_pAddClipScan = FX_Alloc(FX_BYTE, m_bVertical ? m_pBitmap->GetHeight() : m_pBitmap->GetWidth());
|
| + if (!m_pAddClipScan) {
|
| + return FALSE;
|
| + }
|
| }
|
| return TRUE;
|
| }
|
|
|