From 0e4dbbbc3f531a1d5d7ac6396325bfe2185d04a2 Mon Sep 17 00:00:00 2001 From: Kris De Gussem Date: Wed, 22 Feb 2012 19:49:11 +0100 Subject: cppcheck: null pointer dereference fix (bzr r11009) --- src/display/sp-canvas.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) (limited to 'src/display/sp-canvas.cpp') diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp index 580b214f0..fd320927b 100644 --- a/src/display/sp-canvas.cpp +++ b/src/display/sp-canvas.cpp @@ -271,6 +271,8 @@ public: /** * The canvas widget's expose callback. + * + * @todo FIXME: function allways retruns false. */ static gint handleExpose(GtkWidget *widget, GdkEventExpose *event); @@ -2007,22 +2009,26 @@ gint SPCanvasImpl::handleExpose(GtkWidget *widget, GdkEventExpose *event) } int n_rects = 0; - GdkRectangle *rects = 0; + GdkRectangle *rects = NULL; gdk_region_get_rectangles(event->region, &rects, &n_rects); - - for (int i = 0; i < n_rects; i++) { - Geom::IntRect r = Geom::IntRect::from_xywh( - rects[i].x + canvas->x0, rects[i].y + canvas->y0, - rects[i].width, rects[i].height); - - canvas->requestRedraw(r.left(), r.top(), r.right(), r.bottom()); + + if ((rects == NULL) || (n_rects == 0)) + { + return FALSE; } - - if (n_rects > 0) { + else + { + for (int i = 0; i < n_rects; i++) { + Geom::IntRect r = Geom::IntRect::from_xywh( + rects[i].x + canvas->x0, rects[i].y + canvas->y0, + rects[i].width, rects[i].height); + + canvas->requestRedraw(r.left(), r.top(), r.right(), r.bottom()); + } + g_free (rects); + return FALSE; } - - return FALSE; } gint SPCanvasImpl::handleKeyEvent(GtkWidget *widget, GdkEventKey *event) -- cgit v1.2.3