summaryrefslogtreecommitdiff
path: root/apps/gui/bitmap/list-skinned.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/bitmap/list-skinned.c')
-rw-r--r--apps/gui/bitmap/list-skinned.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/apps/gui/bitmap/list-skinned.c b/apps/gui/bitmap/list-skinned.c
index f0396263f3..c5429738ed 100644
--- a/apps/gui/bitmap/list-skinned.c
+++ b/apps/gui/bitmap/list-skinned.c
@@ -219,7 +219,9 @@ bool skinlist_draw(struct screen *display, struct gui_synclist *list)
219 { 219 {
220 int original_x, original_y; 220 int original_x, original_y;
221 skin_viewport = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->data); 221 skin_viewport = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->data);
222 char *viewport_label = SKINOFFSETTOPTR(get_skin_buffer(wps.data), skin_viewport->label); 222 char *viewport_label = NULL;
223 if (skin_viewport)
224 viewport_label = SKINOFFSETTOPTR(get_skin_buffer(wps.data), skin_viewport->label);
223 if (viewport->children == 0 || !viewport_label || 225 if (viewport->children == 0 || !viewport_label ||
224 (skin_viewport->label && strcmp(label, viewport_label)) 226 (skin_viewport->label && strcmp(label, viewport_label))
225 ) 227 )
@@ -254,13 +256,17 @@ bool skinlist_draw(struct screen *display, struct gui_synclist *list)
254 while (imglist) 256 while (imglist)
255 { 257 {
256 struct wps_token *token = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->token); 258 struct wps_token *token = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->token);
257 struct gui_img *img = SKINOFFSETTOPTR(get_skin_buffer(wps.data), token->value.data); 259 struct gui_img *img = NULL;
258 img->display = -1; 260 if (token)
261 img = SKINOFFSETTOPTR(get_skin_buffer(wps.data), token->value.data);
262 if (img)
263 img->display = -1;
259 imglist = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->next); 264 imglist = SKINOFFSETTOPTR(get_skin_buffer(wps.data), imglist->next);
260 } 265 }
261 struct skin_element** children = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->children); 266 struct skin_element** children = SKINOFFSETTOPTR(get_skin_buffer(wps.data), viewport->children);
262 skin_render_viewport(SKINOFFSETTOPTR(get_skin_buffer(wps.data), (intptr_t)children[0]), 267 if (children && *children)
263 &wps, skin_viewport, SKIN_REFRESH_ALL); 268 skin_render_viewport(SKINOFFSETTOPTR(get_skin_buffer(wps.data), (intptr_t)children[0]),
269 &wps, skin_viewport, SKIN_REFRESH_ALL);
264 wps_display_images(&wps, &skin_viewport->vp); 270 wps_display_images(&wps, &skin_viewport->vp);
265 /* force disableing scroll because it breaks later */ 271 /* force disableing scroll because it breaks later */
266 if (!is_selected) 272 if (!is_selected)
@@ -278,4 +284,3 @@ bool skinlist_draw(struct screen *display, struct gui_synclist *list)
278 current_drawing_line = list->selected_item; 284 current_drawing_line = list->selected_item;
279 return true; 285 return true;
280} 286}
281