diff --git a/Source/build.cpp b/Source/build.cpp index ea5b1c6b..c57056cf 100644 --- a/Source/build.cpp +++ b/Source/build.cpp @@ -81,6 +81,9 @@ CEXEBuild::CEXEBuild() } #endif // NSIS_CONFIG_UNINSTALL_SUPPORT + extern const char *NSIS_VERSION; + definedlist.add("NSIS_VERSION", NSIS_VERSION); + #define intdef2str_(x) #x #define intdef2str(x) intdef2str_(x) definedlist.add("NSIS_MAX_INST_TYPES", intdef2str(NSIS_MAX_INST_TYPES)); diff --git a/Source/lang.cpp b/Source/lang.cpp index fb91351c..e810063c 100644 --- a/Source/lang.cpp +++ b/Source/lang.cpp @@ -586,6 +586,14 @@ void CEXEBuild::FillLanguageTable(LanguageTable *table) { continue; #endif + else if (i == NLF_SPACE_REQ || i == NLF_SPACE_AVAIL) + { + if (no_space_texts) + { + continue; + } + } + int sn, index; int pos = build_langstrings.get(NLFStrings[i].szLangStringName, &sn, &index); if (pos >= 0) { @@ -597,6 +605,8 @@ void CEXEBuild::FillLanguageTable(LanguageTable *table) { } else { char *dstr = table->nlf.m_szStrings[i] ? table->nlf.m_szStrings[i] : NLFStrings[i].szDefault; + if (!dstr) + continue; if (i == NLF_BRANDING) { char temp[NSIS_MAX_STRLEN + sizeof(NSIS_VERSION)]; sprintf(temp, dstr, NSIS_VERSION); diff --git a/Source/script.cpp b/Source/script.cpp index 16025b68..fa9adefe 100644 --- a/Source/script.cpp +++ b/Source/script.cpp @@ -2277,7 +2277,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line) // define LANG_LangName as "####" (lang id) // for example ${LANG_ENGLISH} = 1033 char lang_id[16]; - char lang_name[128]; + char lang_name[1024]; wsprintf(lang_name, "LANG_%s", table->nlf.m_szName); wsprintf(lang_id, "%u", table->lang_id); definedlist.add(lang_name, lang_id); @@ -2846,6 +2846,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line) SCRIPT_MSG("SpaceTexts: none\n"); } else { + no_space_texts=false; SetInnerString(NLF_SPACE_REQ,line.gettoken_str(1)); SetInnerString(NLF_SPACE_AVAIL,line.gettoken_str(2)); SCRIPT_MSG("SpaceTexts: required=\"%s\" available=\"%s\"\n",line.gettoken_str(1),line.gettoken_str(2));