]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix crash in wxDC::GetMultiLineTextExtent() after last commit.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 17 Oct 2012 23:06:07 +0000 (23:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 17 Oct 2012 23:06:07 +0000 (23:06 +0000)
Don't call wxTextMeasure::DoGetTextExtent() with NULL width pointer, it now
supposes that both width and height pointers are non-NULL.

Add at least a trivial unit test for GetMultiLineTextExtent().

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

src/common/textmeasurecmn.cpp
tests/graphics/measuring.cpp

index bb16ac048ae3681ced7d916f13a77d8838338bc8..cc8f7489be52976392341f91781928a0d9a5f564 100644 (file)
@@ -101,7 +101,8 @@ void wxTextMeasureBase::GetMultiLineTextExtent(const wxString& text,
                 if ( !heightLineDefault )
                 {
                     // but we don't know it yet - choose something reasonable
-                    DoGetTextExtent(wxS("W"), NULL, &heightLineDefault);
+                    int dummy;
+                    DoGetTextExtent(wxS("W"), &dummy, &heightLineDefault);
                 }
 
                 heightTextTotal += heightLineDefault;
index dbf032bee0498d9d0da2be4834958ea8e92bcda9..a45d45032d200669e9b33f59a30d9c29355aa414 100644 (file)
@@ -95,6 +95,13 @@ void MeasuringTextTestCase::DCGetTextExtent()
     wxClientDC dc(wxTheApp->GetTopWindow());
 
     DoTestGetTextExtent(dc);
+
+    int w;
+    dc.GetMultiLineTextExtent("Good\nbye", &w, NULL);
+    const wxSize sz = dc.GetTextExtent("Good");
+    CPPUNIT_ASSERT_EQUAL( sz.x, w );
+
+    CPPUNIT_ASSERT( dc.GetMultiLineTextExtent("Good\nbye").y >= 2*sz.y );
 }
 
 void MeasuringTextTestCase::WindowGetTextExtent()