From d25d2400fc1747008a4fcad27a929b1b2c043d71 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 13 Sep 2017 14:02:45 +0200 Subject: [PATCH] Fix crash in wxGraphicsPen::CreatePen() after wxPenInfo changes Don't unconditionally dereference the result of wxPen::GetStipple() which can (and often is) null. This fixes crash introduced in 40f8403f5d840a8e9a3132733ed40caa74aaf82e. --- src/common/graphcmn.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/common/graphcmn.cpp b/src/common/graphcmn.cpp index 5f88faf950..7e91cdb306 100644 --- a/src/common/graphcmn.cpp +++ b/src/common/graphcmn.cpp @@ -828,17 +828,22 @@ wxGraphicsPen wxGraphicsContext::CreatePen(const wxPen& pen) const if ( !pen.IsOk() ) return wxGraphicsPen(); - wxDash *dashes; - int nb_dashes = pen.GetDashes(&dashes); + wxGraphicsPenInfo info = wxGraphicsPenInfo() + .Colour(pen.GetColour()) + .Width(pen.GetWidth()) + .Style(pen.GetStyle()) + .Join(pen.GetJoin()) + .Cap(pen.GetCap()) + ; - return DoCreatePen(wxGraphicsPenInfo() - .Colour(pen.GetColour()) - .Width(pen.GetWidth()) - .Style(pen.GetStyle()) - .Stipple(*pen.GetStipple()) - .Dashes(nb_dashes, dashes) - .Join(pen.GetJoin()) - .Cap(pen.GetCap())); + wxDash *dashes; + if ( int nb_dashes = pen.GetDashes(&dashes) ) + info.Dashes(nb_dashes, dashes); + + if ( wxBitmap* const stipple = pen.GetStipple() ) + info.Stipple(*stipple); + + return DoCreatePen(info); } wxGraphicsPen wxGraphicsContext::DoCreatePen(const wxGraphicsPenInfo& info) const