From bce6cc7aaadf09e7fb92a1c8ce9ea40f67aef560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaume=20Delcl=C3=B2s=20Coll?= Date: Tue, 8 Oct 2019 23:14:48 +0200 Subject: [PATCH] call strlen one less time --- src/filesel.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/filesel.c b/src/filesel.c index d92e1c27..e2099359 100644 --- a/src/filesel.c +++ b/src/filesel.c @@ -1684,6 +1684,7 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context short window_shortcut; const char * directory_to_change_to = NULL; int load_from_clipboard = 0; + size_t filename_length = 0; Selector=settings; @@ -2087,13 +2088,16 @@ byte Button_Load_or_Save(T_Selector_settings *settings, byte load, T_IO_Context Unicode_char_strlcpy(filename_unicode, Selector->filename, sizeof(filename_unicode)/sizeof(word)); #ifdef ENABLE_FILENAMES_ICONV // convert from UTF8 to ANSI - if (Selector->filename != NULL && strlen(Selector->filename) > 0) { - char * input = (char *)Selector->filename; - size_t inbytesleft = strlen(input); - char * output = filename_ansi; - size_t outbytesleft = sizeof(filename_ansi)-1; - if(cd != (iconv_t)-1 && (ssize_t)iconv(cd, &input, &inbytesleft, &output, &outbytesleft) >= 0) - *output = '\0'; + if (Selector->filename != NULL) { + filename_length = strlen(Selector->filename); + if (filename_length > 0) { + char * input = (char *)Selector->filename; + size_t inbytesleft = filename_length; + char * output = filename_ansi; + size_t outbytesleft = sizeof(filename_ansi)-1; + if(cd != (iconv_t)-1 && (ssize_t)iconv(cd, &input, &inbytesleft, &output, &outbytesleft) >= 0) + *output = '\0'; + } } #endif /* ENABLE_FILENAMES_ICONV */ #if defined(WIN32) || defined(ENABLE_FILENAMES_ICONV)