summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_tokens.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/skin_engine/skin_tokens.c')
-rw-r--r--apps/gui/skin_engine/skin_tokens.c9
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;