From: Vadim Zeitlin Date: Sun, 12 Dec 2004 17:40:00 +0000 (+0000) Subject: fixed SaveDIB() crash with BW images (patch 1045884) X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/0ce5a3a853f2eaa7fe58e494aa0605918531ff3b fixed SaveDIB() crash with BW images (patch 1045884) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30958 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/imagbmp.cpp b/src/common/imagbmp.cpp index 2b9e1b21c8..b4e8208c47 100644 --- a/src/common/imagbmp.cpp +++ b/src/common/imagbmp.cpp @@ -273,14 +273,16 @@ bool wxBMPHandler::SaveDib(wxImage *image, else if ( (format == wxBMP_8BPP_GREY) || (format == wxBMP_8BPP_RED) || (format == wxBMP_1BPP_BW) ) { - int i; rgbquad = new wxUint8 [palette_size*4]; - for (i = 0; i < palette_size; i++) + for ( int i = 0; i < palette_size; i++ ) { - // if 1BPP_BW then just 0 and 255 then exit - if (( i > 0) && (format == wxBMP_1BPP_BW)) i = 255; - rgbquad[i*4] = rgbquad[i*4+1] = rgbquad[i*4+2] = (wxUint8)i; + // if 1BPP_BW then the value should be either 0 or 255 + wxUint8 c = (i > 0) && (format == wxBMP_1BPP_BW) ? 255 : i; + + rgbquad[i*4] = + rgbquad[i*4+1] = + rgbquad[i*4+2] = c; rgbquad[i*4+3] = 0; } }