From 1920a81a23f6be632bfc3cc45ffd51fda22b1531 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 11 Dec 2016 11:57:02 +0100 Subject: [PATCH 1/5] Fixed: Don't crash if a file is not unique in BNPs --HG-- branch : develop --- 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; } From 10f7abb26fc64ee8fc7cccd82a5af580156e9df1 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 11 Dec 2016 11:58:30 +0100 Subject: [PATCH 2/5] Fixed: %s needs a const char* --HG-- branch : develop --- code/nel/src/ligo/primitive.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/nel/src/ligo/primitive.cpp b/code/nel/src/ligo/primitive.cpp index c244a5092..bda4565ef 100644 --- a/code/nel/src/ligo/primitive.cpp +++ b/code/nel/src/ligo/primitive.cpp @@ -76,7 +76,7 @@ xmlNodePtr GetFirstChildNode (xmlNodePtr xmlNode, const std::string &filename, c if (result) return result; // Output a formated error - XMLError (xmlNode, filename.c_str(), "Can't find XML node named (%s)", childName); + XMLError (xmlNode, filename.c_str(), "Can't find XML node named (%s)", childName.c_str()); return NULL; } @@ -88,7 +88,7 @@ bool GetPropertyString (string &result, const std::string &filename, xmlNodePtr if (!CIXml::getPropertyString (result, xmlNode, propName)) { // Output a formated error - XMLError (xmlNode, filename, "Can't find XML node property (%s)", propName); + XMLError (xmlNode, filename, "Can't find XML node property (%s)", propName.c_str()); return false; } return true; @@ -204,14 +204,14 @@ bool GetNodeString (string &result, const std::string &filename, xmlNodePtr xmlN xmlNodePtr node = CIXml::getFirstChildNode (xmlNode, nodeName); if (!node) { - XMLError (xmlNode, filename, "Can't find XML node named (%s)", nodeName); + XMLError (xmlNode, filename, "Can't find XML node named (%s)", nodeName.c_str()); return false; } // Get the node string if (!CIXml::getContentString (result, node)) { - XMLError (xmlNode, filename, "Can't find any text in the node named (%s)", nodeName); + XMLError (xmlNode, filename, "Can't find any text in the node named (%s)", nodeName.c_str()); return false; } From 62d4d8ccc003ac7e4e745a5a7aaf01b7efb7a808 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 11 Dec 2016 11:59:10 +0100 Subject: [PATCH 3/5] Changed: Display line number instead of a pointer on a string --HG-- branch : develop --- code/nel/src/ligo/primitive.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/nel/src/ligo/primitive.cpp b/code/nel/src/ligo/primitive.cpp index bda4565ef..c20f12003 100644 --- a/code/nel/src/ligo/primitive.cpp +++ b/code/nel/src/ligo/primitive.cpp @@ -63,7 +63,7 @@ void XMLError (xmlNodePtr xmlNode, const std::string &filename, const char *form vsnprintf( buffer, 1024, format, args ); va_end( args ); - Error (filename, "node (%s), line (%p) : %s", xmlNode->name, xmlNode->content, buffer); + Error (filename, "node (%s), line (%d) : %s", xmlNode->name, xmlNode->line, buffer); } From 34d454c8351ad4645266f129ca5d8c69229fbcb1 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 11 Dec 2016 11:59:30 +0100 Subject: [PATCH 4/5] Changed: Use %u for uint --HG-- branch : develop --- code/nel/src/ligo/primitive.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/nel/src/ligo/primitive.cpp b/code/nel/src/ligo/primitive.cpp index c20f12003..cc6555222 100644 --- a/code/nel/src/ligo/primitive.cpp +++ b/code/nel/src/ligo/primitive.cpp @@ -1282,7 +1282,7 @@ bool IPrimitive::getProperty (uint index, std::string &property_name, const IPro index--; ite ++; } - nlwarning ("NLLIGO::IPrimitive::getProperty : invalid index (index : %d, size : %d).", index, _Properties.size ()); + nlwarning ("NLLIGO::IPrimitive::getProperty : invalid index (index : %u, size : %u).", index, (uint)_Properties.size ()); return false; } @@ -1303,7 +1303,7 @@ bool IPrimitive::getProperty (uint index, std::string &property_name, IProperty index--; ite ++; } - nlwarning ("NLLIGO::IPrimitive::getProperty : invalid index (index : %d, size : %d).", index, _Properties.size ()); + nlwarning ("NLLIGO::IPrimitive::getProperty : invalid index (index : %u, size : %u).", index, (uint)_Properties.size ()); return false; } @@ -1461,7 +1461,7 @@ bool IPrimitive::removeProperty (uint index) index--; ite ++; } - nlwarning ("NLLIGO::IPrimitive::removeProperty : invalid index (index : %d, size : %d).", index, _Properties.size ()); + nlwarning ("NLLIGO::IPrimitive::removeProperty : invalid index (index : %u, size : %u).", index, (uint)_Properties.size ()); return false; } @@ -1503,7 +1503,7 @@ bool IPrimitive::getChild (const IPrimitive *&result, uint childId) const } else { - nlwarning ("NLLIGO::IPrimitive::getChild : invalid index (index : %d, size %d).", childId, _Children.size ()); + nlwarning ("NLLIGO::IPrimitive::getChild : invalid index (index : %u, size %u).", childId, (uint)_Children.size ()); } return false; } @@ -1519,7 +1519,7 @@ bool IPrimitive::getChild (IPrimitive *&result, uint childId) } else { - nlwarning ("NLLIGO::IPrimitive::getChild : invalid index (index : %d, size %d).", childId, _Children.size ()); + nlwarning ("NLLIGO::IPrimitive::getChild : invalid index (index : %u, size %u).", childId, (uint)_Children.size ()); } return false; } @@ -1553,7 +1553,7 @@ bool IPrimitive::removeChild (uint childId) } else { - nlwarning ("NLLIGO::IPrimitive::removeChild : invalid index (index : %d, size %d).", childId, _Children.size ()); + nlwarning ("NLLIGO::IPrimitive::removeChild : invalid index (index : %u, size %u).", childId, (uint)_Children.size ()); } return false; } @@ -2510,7 +2510,7 @@ bool CPrimitives::read (xmlNodePtr xmlNode, const std::string &filename, CLigoCo } else { - Error (filename, "CPrimitives::read : Unknown file version (%d)", version); + Error (filename, "CPrimitives::read : Unknown file version (%u)", version); return false; } } From 106c924f491728388c289001610ccb36222bbd21 Mon Sep 17 00:00:00 2001 From: kervala Date: Sun, 11 Dec 2016 12:31:24 +0100 Subject: [PATCH 5/5] Fixed: Use std::vector instead of CUniquePtr for arrays --HG-- branch : develop --- .../3d/object_viewer/snapshot_tool_dlg.cpp | 6 ++--- code/ryzom/client/src/seven_zip/seven_zip.cpp | 22 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp b/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp index 64b88c6fe..a85b8ae9f 100644 --- a/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp +++ b/code/nel/tools/3d/object_viewer/snapshot_tool_dlg.cpp @@ -121,8 +121,8 @@ void CSnapshotToolDlg::stringFromRegistry(HKEY hKey, const TCHAR *name, CString return; } - CUniquePtr tmpDest(new TCHAR[size]); - result = RegQueryValueEx(hKey, name, NULL, &type, (BYTE*)tmpDest.get(), &size); + std::vector tmpDest(size); + result = RegQueryValueEx(hKey, name, NULL, &type, (BYTE*)&tmpDest[0], &size); if (result != ERROR_SUCCESS) { @@ -130,7 +130,7 @@ void CSnapshotToolDlg::stringFromRegistry(HKEY hKey, const TCHAR *name, CString return; } - dest = tmpDest.get(); + dest = &tmpDest[0]; } diff --git a/code/ryzom/client/src/seven_zip/seven_zip.cpp b/code/ryzom/client/src/seven_zip/seven_zip.cpp index 7899e7380..0fb18838a 100644 --- a/code/ryzom/client/src/seven_zip/seven_zip.cpp +++ b/code/ryzom/client/src/seven_zip/seven_zip.cpp @@ -196,26 +196,26 @@ bool unpackLZMA(const std::string &lzmaFile, const std::string &destFileName) } // allocate input buffer for props - CUniquePtr propsBuffer(new uint8[LZMA_PROPS_SIZE]); + std::vector propsBuffer(LZMA_PROPS_SIZE); // size of LZMA content inSize -= LZMA_PROPS_SIZE + 8; // allocate input buffer for lzma data - CUniquePtr inBuffer(new uint8[inSize]); + std::vector inBuffer(inSize); uint64 fileSize = 0; try { // read props - inStream.serialBuffer(propsBuffer.get(), LZMA_PROPS_SIZE); + inStream.serialBuffer(&propsBuffer[0], LZMA_PROPS_SIZE); // read uncompressed size inStream.serial(fileSize); // read lzma content - inStream.serialBuffer(inBuffer.get(), inSize); + inStream.serialBuffer(&inBuffer[0], inSize); } catch(const EReadError &e) { @@ -224,14 +224,14 @@ bool unpackLZMA(const std::string &lzmaFile, const std::string &destFileName) } // allocate the output buffer - CUniquePtr outBuffer(new uint8[fileSize]); + std::vector outBuffer(fileSize); // in and out file sizes SizeT outProcessed = (SizeT)fileSize; SizeT inProcessed = (SizeT)inSize; // decompress the file in memory - sint res = LzmaUncompress(outBuffer.get(), &outProcessed, inBuffer.get(), &inProcessed, propsBuffer.get(), LZMA_PROPS_SIZE); + sint res = LzmaUncompress(&outBuffer[0], &outProcessed, &inBuffer[0], &inProcessed, &propsBuffer[0], LZMA_PROPS_SIZE); if (res != 0 || outProcessed != fileSize) { @@ -245,7 +245,7 @@ bool unpackLZMA(const std::string &lzmaFile, const std::string &destFileName) try { // write content - outStream.serialBuffer(outBuffer.get(), (uint)fileSize); + outStream.serialBuffer(&outBuffer[0], (uint)fileSize); } catch(const EFile &e) { @@ -273,12 +273,12 @@ bool packLZMA(const std::string &srcFileName, const std::string &lzmaFileName) } // allocate input buffer - CUniquePtr inBuffer(new uint8[inSize]); + std::vector inBuffer(inSize); try { // read file in buffer - inStream.serialBuffer(inBuffer.get(), inSize); + inStream.serialBuffer(&inBuffer[0], inSize); } catch(const EReadError &e) { @@ -288,11 +288,11 @@ bool packLZMA(const std::string &srcFileName, const std::string &lzmaFileName) // allocate output buffer size_t outSize = (11 * inSize / 10) + 65536; // worst case = 1.1 * size + 64K - CUniquePtr outBuffer(new uint8[outSize]); + std::vector outBuffer(outSize); // allocate buffer for props size_t outPropsSize = LZMA_PROPS_SIZE; - CUniquePtr outProps(new uint8[outPropsSize]); + std::vector outProps(outPropsSize); // compress with best compression and other default settings sint res = LzmaCompress(outBuffer.get(), &outSize, inBuffer.get(), inSize, outProps.get(), &outPropsSize, 9, 1 << 27, -1, -1, -1, -1, 1);