]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix crash in wxColour ctor from NSColor in wxOSX/Cocoa.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 5 Nov 2010 21:39:09 +0000 (21:39 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 5 Nov 2010 21:39:09 +0000 (21:39 +0000)
wxColour ctor from NSColor added by Kevin Ollivier in r62525 never worked as
it passed NULL pointer to NSColor:getComponents and so always crashed. This
resulted in a crash in the rich text editor of the text sample, for example.

Fix this by passing a valid array containing colour components instead.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/osx/cocoa/colour.mm

index 55a305d29ff036af2d081bb168d29587823753fc..a59b71b2c0c785536179dd23dfd5b2ac52eadc4c 100644 (file)
@@ -23,14 +23,21 @@ wxColour::wxColour(WX_NSColor col)
 {
     size_t noComp = [col numberOfComponents];
 
-    CGFloat *components = NULL;
-    if ( noComp >= 1 && noComp <= 4 )
+    CGFloat components[4];
+    CGFloat *p;
+    if ( noComp < 1 || noComp > WXSIZEOF(components) )
     {
         // TODO verify whether we really are on a RGB color space
         m_alpha = wxALPHA_OPAQUE;
         [col getComponents: components];
+        p = components;
     }
-    InitFromComponents(const_cast<const CGFloat*>(components), noComp);
+    else // Unsupported colour format.
+    {
+        p = NULL;
+    }
+
+    InitFromComponents(components, noComp);
 }
 
 WX_NSColor wxColour::OSXGetNSColor()