diff options
Diffstat (limited to 'apps/gui')
-rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index a4f0814945..51da8c1c18 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c | |||
@@ -877,18 +877,19 @@ const char *get_token_value(struct gui_wps *gwps, | |||
877 | int ret_len = ss->length; | 877 | int ret_len = ss->length; |
878 | if (token_val) | 878 | if (token_val) |
879 | { | 879 | { |
880 | int len = strlen(token_val); | 880 | int len = utf8length(token_val); |
881 | if (len < ss->start) | 881 | if (len < ss->start) |
882 | return NULL; | 882 | return NULL; |
883 | int realstart = utf8seek(token_val, ss->start); | ||
883 | if (ret_len < 0) | 884 | if (ret_len < 0) |
884 | ret_len = strlen(token_val) - ss->start; | 885 | ret_len = strlen(token_val) - realstart; |
885 | if (token_val != buf) | 886 | if (token_val != buf) |
886 | { | 887 | { |
887 | memcpy(buf, &token_val[ss->start], ret_len); | 888 | memcpy(buf, &token_val[realstart], ret_len); |
888 | } | 889 | } |
889 | else | 890 | else |
890 | { | 891 | { |
891 | buf = &buf[ss->start]; | 892 | buf = &buf[realstart]; |
892 | } | 893 | } |
893 | buf[ret_len] = '\0'; | 894 | buf[ret_len] = '\0'; |
894 | return buf; | 895 | return buf; |