diff --git a/src/musrview.cpp b/src/musrview.cpp index eddb1eab6..1cc9e567f 100644 --- a/src/musrview.cpp +++ b/src/musrview.cpp @@ -135,6 +135,7 @@ int main(int argc, char *argv[]) std::stringstream errMsg; memset(fileName, '\0', sizeof(fileName)); + memset(graphicsExtension, '\0', sizeof(graphicsExtension)); // add default shared library path /usr/local/lib if not already persent const char *dsp = gSystem->GetDynamicPath(); @@ -149,7 +150,7 @@ int main(int argc, char *argv[]) for (int i=1; i saxParser = std::make_unique(); std::unique_ptr startupHandler = std::make_unique(); if (!startupHandler->StartupFileFound()) { std::cerr << std::endl << ">> musrview **WARNING** couldn't find " << startupHandler->GetStartupFilePath().Data(); std::cerr << std::endl; } else { - strcpy(startup_path_name, startupHandler->GetStartupFilePath().Data()); + strncpy(startup_path_name, startupHandler->GetStartupFilePath().Data(), sizeof(startup_path_name)); saxParser->ConnectToHandler("PStartupHandler", startupHandler.get()); //status = saxParser->ParseFile(startup_path_name); // parsing the file as above seems to lead to problems in certain environments; @@ -345,7 +347,7 @@ int main(int argc, char *argv[]) TApplication app("App", &cc, args.data()); std::vector canvasVector; - PMusrCanvas *musrCanvas; + PMusrCanvas *musrCanvas = nullptr; bool ok = true; for (unsigned int i=0; iGetMsrPlotList()->size(); i++) { @@ -364,12 +366,21 @@ int main(int argc, char *argv[]) graphicsOutput||asciiOutput, fourier, avg, theoAtData); + if (musrCanvas == nullptr) { + errMsg << ">> musrview **SEVERE ERROR** Couldn't invoke all necessary objects, will quit.\n"; + std::cerr << errMsg.str(); + if (show_errMsgBox) + musrview_error_msg(errMsg.str()); + ok = false; + break; + } if (!musrCanvas->IsValid()) { errMsg << ">> musrview **SEVERE ERROR** Couldn't invoke all necessary objects, will quit.\n"; std::cerr << errMsg.str(); if (show_errMsgBox) musrview_error_msg(errMsg.str()); ok = false; + delete musrCanvas; break; }