From 27d3fd12d9f041c00abfee23b93dbca144279179 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 11 Dec 2016 11:57:02 +0100 Subject: [PATCH] Fixed: Don't crash if a file is not unique in BNPs --- code/nel/tools/misc/bnp_make/main.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/code/nel/tools/misc/bnp_make/main.cpp b/code/nel/tools/misc/bnp_make/main.cpp index 868f36f62..d6842b8fe 100644 --- a/code/nel/tools/misc/bnp_make/main.cpp +++ b/code/nel/tools/misc/bnp_make/main.cpp @@ -85,14 +85,14 @@ bool i_comp(const string &s0, const string &s1) return nlstricmp (CFile::getFilename(s0).c_str(), CFile::getFilename(s1).c_str()) < 0; } -void packSubRecurse(const std::string &srcDirectory) +bool packSubRecurse(const std::string &srcDirectory) { vector pathContent; printf ("Treating directory: %s\n", srcDirectory.c_str()); CPath::getPathContent(srcDirectory, true, false, true, pathContent); - if (pathContent.empty()) return; + if (pathContent.empty()) return true; // Sort filename sort (pathContent.begin(), pathContent.end(), i_comp); @@ -102,8 +102,8 @@ void packSubRecurse(const std::string &srcDirectory) { if (toLower(CFile::getFilename(pathContent[i-1])) == toLower(CFile::getFilename(pathContent[i]))) { - nlerror("File %s is not unique in BNP!", CFile::getFilename(pathContent[i]).c_str()); - return; + nlwarning("File %s is not unique in BNP!", CFile::getFilename(pathContent[i]).c_str()); + return false; } } @@ -121,6 +121,8 @@ void packSubRecurse(const std::string &srcDirectory) } } } + + return true; } // --------------------------------------------------------------------------- @@ -194,7 +196,8 @@ int main(int argc, char **argv) CFile::deleteFile(gBNPHeader.BigFileName); - packSubRecurse(srcDirectory); + if (!packSubRecurse(srcDirectory)) return 1; + return gBNPHeader.appendHeader() ? 0:-1; }