Fix:gui_internal:Don't crash when text is NULL
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Thu, 19 Jun 2008 21:51:26 +0000 (21:51 +0000)
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Thu, 19 Jun 2008 21:51:26 +0000 (21:51 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@1151 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/navit/gui/internal/gui_internal.c

index ef22ae3..fb38082 100644 (file)
@@ -274,14 +274,17 @@ static struct widget *
 gui_internal_label_new(struct gui_priv *this, char *text)
 {
        struct point p[4];
-       int h=this->font_size;
+       int w=0,h=this->font_size;
 
        struct widget *widget=g_new0(struct widget, 1);
        widget->type=widget_label;
-       widget->text=g_strdup(text);
-       graphics_get_text_bbox(this->gra, this->font, text, 0x10000, 0x0, p);
+       if (text) {
+               widget->text=g_strdup(text);
+               graphics_get_text_bbox(this->gra, this->font, text, 0x10000, 0x0, p);
+               w=p[2].x-p[0].x;
+       }
        widget->h=h;
-       widget->w=p[2].x-p[0].x+this->spacing;
+       widget->w=w+this->spacing;
        widget->flags=gravity_center;
 
        return widget;
@@ -339,8 +342,10 @@ gui_internal_label_render(struct gui_priv *this, struct widget *w)
 {
        struct point pnt=w->p;
        gui_internal_background_render(this, w);
-       pnt.y+=w->h-this->spacing;
-       graphics_draw_text(this->gra, this->text_foreground, this->text_background, this->font, w->text, &pnt, 0x10000, 0x0);
+       if (w->text) {
+               pnt.y+=w->h-this->spacing;
+               graphics_draw_text(this->gra, this->text_foreground, this->text_background, this->font, w->text, &pnt, 0x10000, 0x0);
+       }
 }
 
 static struct widget *