From aa2bdcccfc72ddd952492241880afffca97e371b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 2 Jun 2015 15:38:14 +1000 Subject: [PATCH] Simplify Win32 extension check --- source/blender/blenlib/intern/path_util.c | 30 +++++++++++------------ 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/source/blender/blenlib/intern/path_util.c b/source/blender/blenlib/intern/path_util.c index b079478f397..e85f72f6717 100644 --- a/source/blender/blenlib/intern/path_util.c +++ b/source/blender/blenlib/intern/path_util.c @@ -1034,22 +1034,20 @@ bool BLI_path_program_extensions_add_win32(char *name, const size_t maxlen) type = BLI_exists(name); if ((type == 0) || S_ISDIR(type)) { char filename[FILE_MAX]; - char ext[FILE_MAX]; - const char *extensions = getenv("PATHEXT"); - if (extensions) { - const char *temp; + const char *ext = getenv("PATHEXT"); + if (ext) { + const int name_len = strlen(name); + const char *ext_next; + /* null terminated in the loop */ + memcpy(filename, name, name_len); do { - strcpy(filename, name); - temp = strchr(extensions, ';'); - if (temp) { - strncpy(ext, extensions, temp - extensions); - ext[temp - extensions] = 0; - extensions = temp + 1; - strcat(filename, ext); - } - else { - strcat(filename, extensions); - } + int ext_len; + + ext_next = strchr(ext, ';'); + ext_len = ext_next ? ((ext_next++) - ext) : strlen(ext); + + memcpy(filename + name_len, ext, ext_len); + filename[name_len + ext_len] = '\0'; type = BLI_exists(filename); if (type && (!S_ISDIR(type))) { @@ -1057,7 +1055,7 @@ bool BLI_path_program_extensions_add_win32(char *name, const size_t maxlen) BLI_strncpy(name, filename, maxlen); break; } - } while (temp); + } while ((ext = ext_next)); } } else {