From a96a4bcaa67c0a5c793f1adeebea2ffe8e86a2b0 Mon Sep 17 00:00:00 2001 From: ALEXks Date: Wed, 4 Jun 2025 15:07:20 +0300 Subject: [PATCH] added dump messages function --- src/Sapfor.cpp | 61 +++++++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/src/Sapfor.cpp b/src/Sapfor.cpp index fdcefed..69a9404 100644 --- a/src/Sapfor.cpp +++ b/src/Sapfor.cpp @@ -2403,6 +2403,40 @@ void runPass(const int curr_regime, const char *proj_name, const char *folderNam } } +static void dumpMessages(bool inCatch) +{ + json byFileArray = json::array(); + for (auto& byFile : SPF_messages) + { + json inFile; + inFile["file"] = byFile.first; + + json messages = json::array(); + for (auto& message : byFile.second) + { + if (inCatch) + message.print(byFile.first); + messages.push_back(message.toJson()); + } + inFile["messages"] = messages; + byFileArray.push_back(inFile); + } + json allMessages; + allMessages["allMessages"] = byFileArray; + + const string dump = allMessages.dump().c_str(); + + if (dump.size()) + { + FILE* outF = fopen((string(VISUALIZER_DATA_PATH) + "/error_messages.json").c_str(), "w"); + if (outF) + { + fprintf(outF, "%s", dump.c_str()); + fclose(outF); + } + } +} + int main(int argc, char **argv) { int leakMemDump = 0; @@ -2662,35 +2696,12 @@ int main(int argc, char **argv) printStackTrace(); printf("exception occurred\n"); - FILE* outF = fopen((string(VISUALIZER_DATA_PATH) + "/error_messages.json").c_str(), "w"); - if (outF) - { - json byFileArray = json::array(); - for (auto& byFile : SPF_messages) - { - json inFile; - inFile["file"] = byFile.first; - - json messages = json::array(); - for (auto& message : byFile.second) - { - message.print(byFile.first); - messages.push_back(message.toJson()); - } - inFile["messages"] = messages; - byFileArray.push_back(inFile); - } - json allMessages; - allMessages["allMessages"] = byFileArray; - - fprintf(outF, "%s", allMessages.dump().c_str()); - fclose(outF); - } + dumpMessages(true); } + dumpMessages(false); deleteAllAllocatedData(withDel); - #if _WIN32 && _DEBUG if (leakMemDump) {