Fixed argument checks, now NULL pointer are no longer dereferenced

in functions.
This commit is contained in:
Armin Novak 2013-08-30 14:47:00 +02:00
parent e5c138a5b9
commit b190a16c5d
4 changed files with 158 additions and 12 deletions

View File

@ -909,7 +909,11 @@ BYTE* freerdp_icon_convert(BYTE* srcData, BYTE* dstData, BYTE* mask, int width,
for (bit = 0; bit < 8; bit++) for (bit = 0; bit < 8; bit++)
if ((bmask & (0x80 >> bit)) == 0) if ((bmask & (0x80 >> bit)) == 0)
*(icon + (height - y - 1) * width + x + bit) |= 0xFF000000; {
UINT32 *tmp = (icon + (height - y - 1) * width + x + bit);
if (tmp)
*tmp |= 0xFF000000;
}
} }
if ((width % 8) != 0) if ((width % 8) != 0)
@ -918,7 +922,11 @@ BYTE* freerdp_icon_convert(BYTE* srcData, BYTE* dstData, BYTE* mask, int width,
for (bit = 0; bit < width % 8; bit++) for (bit = 0; bit < width % 8; bit++)
if ((bmask & (0x80 >> bit)) == 0) if ((bmask & (0x80 >> bit)) == 0)
*(icon + (height - y - 1) * width + x + bit) |= 0xFF000000; {
UINT32 *tmp = (icon + (height - y - 1) * width + x + bit);
if (tmp)
*tmp |= 0xFF000000;
}
} }
/* Skip padding */ /* Skip padding */

View File

@ -143,6 +143,9 @@ static int BitBlt_SRCCOPY_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
if ((hdcDest->selectedObject != hdcSrc->selectedObject) || if ((hdcDest->selectedObject != hdcSrc->selectedObject) ||
gdi_CopyOverlap(nXDest, nYDest, nWidth, nHeight, nXSrc, nYSrc) == 0) gdi_CopyOverlap(nXDest, nYDest, nWidth, nHeight, nXSrc, nYSrc) == 0)
{ {
@ -204,6 +207,9 @@ static int BitBlt_NOTSRCCOPY_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int
UINT16* srcp; UINT16* srcp;
UINT16* dstp; UINT16* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -251,6 +257,9 @@ static int BitBlt_SRCERASE_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nW
UINT16* srcp; UINT16* srcp;
UINT16* dstp; UINT16* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -276,6 +285,9 @@ static int BitBlt_NOTSRCERASE_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int
UINT16* srcp; UINT16* srcp;
UINT16* dstp; UINT16* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -301,6 +313,9 @@ static int BitBlt_SRCINVERT_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int n
UINT16* srcp; UINT16* srcp;
UINT16* dstp; UINT16* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -326,6 +341,9 @@ static int BitBlt_SRCAND_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWid
UINT16* srcp; UINT16* srcp;
UINT16* dstp; UINT16* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -351,6 +369,9 @@ static int BitBlt_SRCPAINT_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nW
UINT16* srcp; UINT16* srcp;
UINT16* dstp; UINT16* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -379,6 +400,9 @@ static int BitBlt_DSPDxax_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
UINT16 color16; UINT16 color16;
HGDI_BITMAP hSrcBmp; HGDI_BITMAP hSrcBmp;
if (!hdcDst || !hdcSrc)
return 1;
/* D = (S & P) | (~S & D) */ /* D = (S & P) | (~S & D) */
/* DSPDxax, used to draw glyphs */ /* DSPDxax, used to draw glyphs */
@ -420,6 +444,9 @@ static int BitBlt_PSDPxax_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
UINT16* patp; UINT16* patp;
UINT16 color16; UINT16 color16;
if (!hdcSrc || !hdcDest)
return 1;
/* D = (S & D) | (~S & P) */ /* D = (S & D) | (~S & P) */
if (hdcDest->brush->style == GDI_BS_SOLID) if (hdcDest->brush->style == GDI_BS_SOLID)
@ -473,6 +500,9 @@ static int BitBlt_SPna_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth
UINT16* dstp; UINT16* dstp;
UINT16* patp; UINT16* patp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -548,6 +578,9 @@ static int BitBlt_DSna_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth
UINT16* srcp; UINT16* srcp;
UINT16* dstp; UINT16* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -575,6 +608,9 @@ static int BitBlt_MERGECOPY_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int n
UINT16* dstp; UINT16* dstp;
UINT16* patp; UINT16* patp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -601,6 +637,9 @@ static int BitBlt_MERGEPAINT_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int
UINT16* srcp; UINT16* srcp;
UINT16* dstp; UINT16* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -732,6 +771,9 @@ static int BitBlt_PATPAINT_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nW
UINT16* dstp; UINT16* dstp;
UINT16* patp; UINT16* patp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT16*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -770,6 +812,9 @@ int BitBlt_16bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth, int nHeigh
gdi_InvalidateRegion(hdcDest, nXDest, nYDest, nWidth, nHeight); gdi_InvalidateRegion(hdcDest, nXDest, nYDest, nWidth, nHeight);
if (!hdcDest)
return 1;
switch (rop) switch (rop)
{ {
case GDI_BLACKNESS: case GDI_BLACKNESS:

View File

@ -160,6 +160,9 @@ static int BitBlt_SRCCOPY_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcDst || !hdcSrc)
return 1;
if ((hdcDest->selectedObject != hdcSrc->selectedObject) || if ((hdcDest->selectedObject != hdcSrc->selectedObject) ||
gdi_CopyOverlap(nXDest, nYDest, nWidth, nHeight, nXSrc, nYSrc) == 0) gdi_CopyOverlap(nXDest, nYDest, nWidth, nHeight, nXSrc, nYSrc) == 0)
{ {
@ -221,6 +224,9 @@ static int BitBlt_NOTSRCCOPY_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int
UINT32* srcp; UINT32* srcp;
UINT32* dstp; UINT32* dstp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -268,6 +274,9 @@ static int BitBlt_SRCERASE_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nW
UINT32* srcp; UINT32* srcp;
UINT32* dstp; UINT32* dstp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -293,6 +302,9 @@ static int BitBlt_NOTSRCERASE_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int
UINT32* srcp; UINT32* srcp;
UINT32* dstp; UINT32* dstp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -318,6 +330,9 @@ static int BitBlt_SRCINVERT_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int n
UINT32* srcp; UINT32* srcp;
UINT32* dstp; UINT32* dstp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -343,6 +358,9 @@ static int BitBlt_SRCAND_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWid
UINT32* srcp; UINT32* srcp;
UINT32* dstp; UINT32* dstp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -368,6 +386,9 @@ static int BitBlt_SRCPAINT_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nW
UINT32* srcp; UINT32* srcp;
UINT32* dstp; UINT32* dstp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -398,6 +419,9 @@ static int BitBlt_DSPDxax_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
UINT32 color32; UINT32 color32;
HGDI_BITMAP hSrcBmp; HGDI_BITMAP hSrcBmp;
if (!hdcDst || !hdcSrc)
return 1;
/* D = (S & P) | (~S & D) */ /* D = (S & P) | (~S & D) */
color32 = gdi_get_color_32bpp(hdcDest, hdcDest->textColor); color32 = gdi_get_color_32bpp(hdcDest, hdcDest->textColor);
@ -460,6 +484,9 @@ static int BitBlt_PSDPxax_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
UINT32* patp; UINT32* patp;
UINT32 color32; UINT32 color32;
if (!hdcDst || !hdcSrc)
return 1;
/* D = (S & D) | (~S & P) */ /* D = (S & D) | (~S & P) */
if (hdcDest->brush->style == GDI_BS_SOLID) if (hdcDest->brush->style == GDI_BS_SOLID)
@ -514,6 +541,9 @@ static int BitBlt_SPDSxax_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
UINT32* patp; UINT32* patp;
UINT32 color32; UINT32 color32;
if (!hdcDst || !hdcSrc)
return 1;
/* D = S ^ (P & (D ^ S)) */ /* D = S ^ (P & (D ^ S)) */
if (hdcDest->brush->style == GDI_BS_SOLID) if (hdcDest->brush->style == GDI_BS_SOLID)
@ -567,6 +597,9 @@ static int BitBlt_SPna_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth
UINT32* dstp; UINT32* dstp;
UINT32* patp; UINT32* patp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -594,6 +627,9 @@ static int BitBlt_DSna_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth
UINT32* srcp; UINT32* srcp;
UINT32* dstp; UINT32* dstp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -670,6 +706,9 @@ static int BitBlt_MERGECOPY_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int n
UINT32* dstp; UINT32* dstp;
UINT32* patp; UINT32* patp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -697,6 +736,9 @@ static int BitBlt_MERGEPAINT_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int
UINT32* srcp; UINT32* srcp;
UINT32* dstp; UINT32* dstp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -828,6 +870,9 @@ static int BitBlt_PATPAINT_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nW
UINT32* dstp; UINT32* dstp;
UINT32* patp; UINT32* patp;
if (!hdcDst || !hdcSrc)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = (UINT32*) gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -866,6 +911,9 @@ int BitBlt_32bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth, int nHeigh
gdi_InvalidateRegion(hdcDest, nXDest, nYDest, nWidth, nHeight); gdi_InvalidateRegion(hdcDest, nXDest, nYDest, nWidth, nHeight);
if (!hdcDest)
return 1;
switch (rop) switch (rop)
{ {
case GDI_BLACKNESS: case GDI_BLACKNESS:

View File

@ -88,6 +88,9 @@ static int BitBlt_SRCCOPY_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWid
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
if ((hdcDest->selectedObject != hdcSrc->selectedObject) || if ((hdcDest->selectedObject != hdcSrc->selectedObject) ||
gdi_CopyOverlap(nXDest, nYDest, nWidth, nHeight, nXSrc, nYSrc) == 0) gdi_CopyOverlap(nXDest, nYDest, nWidth, nHeight, nXSrc, nYSrc) == 0)
{ {
@ -149,6 +152,9 @@ static int BitBlt_NOTSRCCOPY_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int n
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -196,6 +202,9 @@ static int BitBlt_SRCERASE_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -221,6 +230,9 @@ static int BitBlt_NOTSRCERASE_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -246,6 +258,9 @@ static int BitBlt_SRCINVERT_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nW
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -271,6 +286,9 @@ static int BitBlt_SRCAND_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidt
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -296,6 +314,9 @@ static int BitBlt_SRCPAINT_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -317,6 +338,9 @@ static int BitBlt_SRCPAINT_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
static int BitBlt_DSPDxax_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HGDI_DC hdcSrc, int nXSrc, int nYSrc) static int BitBlt_DSPDxax_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HGDI_DC hdcSrc, int nXSrc, int nYSrc)
{ {
if (!hdcSrc || !hdcDest)
return 1;
/* TODO: Implement 8bpp DSPDxax BitBlt */ /* TODO: Implement 8bpp DSPDxax BitBlt */
return 0; return 0;
} }
@ -329,6 +353,9 @@ static int BitBlt_PSDPxax_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWid
BYTE* patp; BYTE* patp;
BYTE color8; BYTE color8;
if (!hdcSrc || !hdcDest)
return 1;
/* D = (S & D) | (~S & P) */ /* D = (S & D) | (~S & P) */
if (hdcDest->brush->style == GDI_BS_SOLID) if (hdcDest->brush->style == GDI_BS_SOLID)
@ -382,6 +409,9 @@ static int BitBlt_SPna_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth,
BYTE* dstp; BYTE* dstp;
BYTE* patp; BYTE* patp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -461,6 +491,9 @@ static int BitBlt_DSna_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth,
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -487,6 +520,9 @@ static int BitBlt_MERGECOPY_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nW
BYTE* dstp; BYTE* dstp;
BYTE* patp; BYTE* patp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -515,6 +551,9 @@ static int BitBlt_MERGEPAINT_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int n
BYTE* srcp; BYTE* srcp;
BYTE* dstp; BYTE* dstp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -646,6 +685,9 @@ static int BitBlt_PATPAINT_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWi
BYTE* dstp; BYTE* dstp;
BYTE* patp; BYTE* patp;
if (!hdcSrc || !hdcDest)
return 1;
for (y = 0; y < nHeight; y++) for (y = 0; y < nHeight; y++)
{ {
srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y); srcp = gdi_get_bitmap_pointer(hdcSrc, nXSrc, nYSrc + y);
@ -683,6 +725,9 @@ int BitBlt_8bpp(HGDI_DC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight
gdi_InvalidateRegion(hdcDest, nXDest, nYDest, nWidth, nHeight); gdi_InvalidateRegion(hdcDest, nXDest, nYDest, nWidth, nHeight);
if (!hdcDest)
return 1;
switch (rop) switch (rop)
{ {
case GDI_BLACKNESS: case GDI_BLACKNESS: