diff options
author | William Wilgus <wilgus.william@gmail.com> | 2021-10-12 01:58:37 -0400 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2021-10-13 18:02:19 -0400 |
commit | 6fb942d8ff843444cbade57278de6e6687337fd6 (patch) | |
tree | 420eae42ace4750118acdf81d6712bd32dde380e | |
parent | e0468074fea65a023274417815a310e5e9017661 (diff) | |
download | rockbox-6fb942d8ff.tar.gz rockbox-6fb942d8ff.zip |
skin engine - fail gracefully when %Sx is used on non lang id string
CheckWPS doesn't catch errors involving translated strings
Instead of breaking old themes when the langids no long exist
return "<ERR>"
Change-Id: I0d744cd48bb5a27e735fce3f6f740450d1f6a55a
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 2 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index a1cc40ff6e..4ebdcab722 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -768,7 +768,7 @@ static int parse_setting_and_lang(struct skin_element *element, #ifndef __PCTOOL__ i = lang_english_to_id(temp); if (i < 0) - return WPS_ERROR_INVALID_PARAM; + i = LANG_LAST_INDEX_IN_ARRAY; #endif } else if (element->params_count > 1) diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index a0de45d3e3..a4c9af7539 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c @@ -821,7 +821,8 @@ const char *get_token_value(struct gui_wps *gwps, return (char*)SKINOFFSETTOPTR(get_skin_buffer(data), token->value.data); case SKIN_TOKEN_TRANSLATEDSTRING: - return (char*)P2STR(ID2P(token->value.i)); + return token->value.i < LANG_LAST_INDEX_IN_ARRAY ? + (char*)P2STR(ID2P(token->value.i)) : "<ERR>"; case SKIN_TOKEN_PLAYLIST_ENTRIES: numeric_ret = playlist_amount(); |