From 7564d7ff27c4908dce8740f0d1b236c34b3377ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Va=CC=81clav=20Slavi=CC=81k?= Date: Sun, 16 Sep 2018 14:01:20 +0200 Subject: [PATCH] Add M_COLDATA access asserts to wxOSX Similarly to wxGTK, check the color for validity before deferencing its ref data. --- src/osx/core/colour.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/osx/core/colour.cpp b/src/osx/core/colour.cpp index 6f6b0ac969..8edb7f0669 100644 --- a/src/osx/core/colour.cpp +++ b/src/osx/core/colour.cpp @@ -163,27 +163,37 @@ wxColour::wxColour(CGColorRef col) wxColour::ChannelType wxColour::Red() const { + wxCHECK_MSG( IsOk(), 0, "invalid colour" ); + return wxRound(M_COLDATA->Red() * 255.0); } wxColour::ChannelType wxColour::Green() const { + wxCHECK_MSG( IsOk(), 0, "invalid colour" ); + return wxRound(M_COLDATA->Green() * 255.0); } wxColour::ChannelType wxColour::Blue() const { + wxCHECK_MSG( IsOk(), 0, "invalid colour" ); + return wxRound(M_COLDATA->Blue() * 255.0); } wxColour::ChannelType wxColour::Alpha() const { + wxCHECK_MSG( IsOk(), 0, "invalid colour" ); + return wxRound(M_COLDATA->Alpha() * 255.0); } #if wxOSX_USE_COCOA_OR_CARBON void wxColour::GetRGBColor(RGBColor* col) const { + wxCHECK_RET( IsOk(), "invalid colour" ); + col->red = M_COLDATA->Red() * 65535.0; col->blue = M_COLDATA->Blue() * 65535.0; col->green = M_COLDATA->Green() * 65535.0; @@ -192,12 +202,16 @@ void wxColour::GetRGBColor(RGBColor* col) const CGColorRef wxColour::GetCGColor() const { + wxCHECK_MSG( IsOk(), NULL, "invalid colour" ); + return M_COLDATA->GetCGColor(); } #if wxOSX_USE_COCOA WX_NSColor wxColour::OSXGetNSColor() const { + wxCHECK_MSG( IsOk(), NULL, "invalid colour" ); + return M_COLDATA->GetNSColor(); } #endif