From 6f439d3c7b7dbe9c064794430d6115de9951f5e8 Mon Sep 17 00:00:00 2001 From: kichik Date: Sun, 29 Sep 2002 21:32:35 +0000 Subject: [PATCH] Now doesn't crash if the closing bracket ')' couldn't be found git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1218 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/build.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Source/build.cpp b/Source/build.cpp index c577a2fc..8b67d00f 100644 --- a/Source/build.cpp +++ b/Source/build.cpp @@ -399,10 +399,13 @@ int CEXEBuild::add_string_main(const char *string, int process) // returns offse if (!process) return build_strlist.add(string,2); if (*string == '$' && *(string+1) == '(') { + int idx = -1; char *cp = strdup(string+2); - strchr(cp, ')')[0] = 0; - int idx; - if (build_userlangstrings->find(cp, 0, &idx) < 0) idx = -1; + char *p = strchr(cp, ')'); + if (*p) { + *p = 0; + if (build_userlangstrings->find(cp, 0, &idx) < 0) idx = -1; + } free(cp); if (idx >= 0) return -(idx+1); } @@ -418,10 +421,13 @@ int CEXEBuild::add_string_uninst(const char *string, int process) // returns off if (!process) return ubuild_strlist.add(string,2); if (*string == '$' && *(string+1) == '(') { + int idx = -1; char *cp = strdup(string+2); - strchr(cp, ')')[0] = 0; - int idx; - if (ubuild_userlangstrings->find(cp, 0, &idx) < 0) idx = -1; + char *p = strchr(cp, ')'); + if (*p) { + *p = 0; + if (ubuild_userlangstrings->find(cp, 0, &idx) < 0) idx = -1; + } free(cp); if (idx >= 0) return -(idx+1); }