From 7633322d1ebff2b2e6480c811738e2daf5916350 Mon Sep 17 00:00:00 2001 From: Steve Date: Sat, 21 Apr 2018 17:21:10 +0100 Subject: [PATCH] Avoid array (string) overlapping. --- src/system/i18n.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/system/i18n.c b/src/system/i18n.c index d0bef87..1ac54a2 100644 --- a/src/system/i18n.c +++ b/src/system/i18n.c @@ -32,7 +32,7 @@ void setLanguage(char *applicationName, char *languageCode) { char language[MAX_LINE_LENGTH], c[MAX_LINE_LENGTH]; char *lang, **key, **value; - int i, swap; + int i, swap, length; FILE *fp; MOHeader header; MOEntry *original, *translation; @@ -75,11 +75,15 @@ void setLanguage(char *applicationName, char *languageCode) STRNCPY(language, languageCode, MAX_LINE_LENGTH); } - if (strstr(language, ".") != NULL) - { - lang = strtok(language, "."); + length = strlen(language); - STRNCPY(language, lang, MAX_LINE_LENGTH); + for (i=0 ; i < length ; i++) + { + if (language[i] == '.') + { + language[i] = '\0'; + break; + } } SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "Locale is %s", language); @@ -103,9 +107,17 @@ void setLanguage(char *applicationName, char *languageCode) return; } - lang = strtok(language, "_"); - - STRNCPY(language, lang, MAX_LINE_LENGTH); + length = strlen(language); + + for (i=0;i