summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/gui/skin_engine/skin_parser.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 8e59c2c2b0..789d42aab5 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -1715,7 +1715,7 @@ void skin_data_free_buflib_allocs(struct wps_data *wps_data)
1715 if (wps_data->wps_loaded) 1715 if (wps_data->wps_loaded)
1716 skin_buffer = get_skin_buffer(wps_data); 1716 skin_buffer = get_skin_buffer(wps_data);
1717 if (!skin_buffer) 1717 if (!skin_buffer)
1718 return; 1718 goto abort;
1719 1719
1720#ifndef __PCTOOL__ 1720#ifndef __PCTOOL__
1721 struct skin_token_list *list = SKINOFFSETTOPTR(skin_buffer, wps_data->images); 1721 struct skin_token_list *list = SKINOFFSETTOPTR(skin_buffer, wps_data->images);
@@ -1744,13 +1744,15 @@ void skin_data_free_buflib_allocs(struct wps_data *wps_data)
1744 } 1744 }
1745 list = SKINOFFSETTOPTR(skin_buffer, list->next); 1745 list = SKINOFFSETTOPTR(skin_buffer, list->next);
1746 } 1746 }
1747 wps_data->images = PTRTOSKINOFFSET(skin_buffer, NULL);
1748 if (font_ids != NULL) 1747 if (font_ids != NULL)
1749 { 1748 {
1750 while (wps_data->font_count > 0) 1749 while (wps_data->font_count > 0)
1751 font_unload(font_ids[--wps_data->font_count]); 1750 font_unload(font_ids[--wps_data->font_count]);
1752 } 1751 }
1753 wps_data->font_ids = PTRTOSKINOFFSET(skin_buffer, NULL); 1752
1753abort:
1754 wps_data->font_ids = PTRTOSKINOFFSET(skin_buffer, NULL); /* Safe if skin_buffer is NULL */
1755 wps_data->images = PTRTOSKINOFFSET(skin_buffer, NULL);
1754 if (wps_data->buflib_handle > 0) 1756 if (wps_data->buflib_handle > 0)
1755 core_free(wps_data->buflib_handle); 1757 core_free(wps_data->buflib_handle);
1756 wps_data->buflib_handle = -1; 1758 wps_data->buflib_handle = -1;