From aebf07511e329004c15813e6811e26c75cf191a2 Mon Sep 17 00:00:00 2001 From: Roland Rossgotterer Date: Tue, 14 May 2019 11:37:54 +0200 Subject: [PATCH] [XSwiftBus] Allocate big memory buffers on the heap instead of stack --- src/xswiftbus/traffic.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/xswiftbus/traffic.cpp b/src/xswiftbus/traffic.cpp index 47b935a32..5031ed2ac 100644 --- a/src/xswiftbus/traffic.cpp +++ b/src/xswiftbus/traffic.cpp @@ -147,15 +147,17 @@ namespace XSwiftBus void CTraffic::findAllCslPackages(const std::string &path) { - char nameBuffer[65536]; - char *indices[4096]; + std::vector nameBuffer(65536, '\0'); + std::vector indices(4096, nullptr); int returnedFiles; - int totalFiles; // Remove trailing / std::string dir = path.substr(0, path.size() - 1); - XPLMGetDirectoryContents(dir.c_str(), 0, nameBuffer, sizeof(nameBuffer), indices, sizeof(indices) / sizeof(char*), &totalFiles, &returnedFiles); - for (int i = 0; i < returnedFiles; i++) + XPLMGetDirectoryContents(dir.c_str(), 0, + nameBuffer.data(), static_cast(nameBuffer.size()), + indices.data(), static_cast(indices.size()), + nullptr, &returnedFiles); + for (std::size_t i = 0; i < static_cast(returnedFiles); i++) { std::string fileName(indices[i]); if (fileName == "xsb_aircraft.txt")