added some more sanity checks for musrview.
This commit is contained in:
@@ -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<argc; i++) {
|
||||
if (strstr(argv[i], ".msr") || strstr(argv[i], ".mlog")) {
|
||||
if (strlen(fileName) == 0) {
|
||||
strcpy(fileName, argv[i]);
|
||||
strncpy(fileName, argv[i], sizeof(fileName));
|
||||
} else {
|
||||
std::cerr << std::endl << "**ERROR** only one file name allowed." << std::endl;
|
||||
show_syntax = true;
|
||||
@@ -188,7 +189,7 @@ int main(int argc, char *argv[])
|
||||
!strcmp(argv[i], "--xpm") || !strcmp(argv[i], "--root")) {
|
||||
|
||||
graphicsOutput = true;
|
||||
strcpy(graphicsExtension, argv[i]+2);
|
||||
strncpy(graphicsExtension, argv[i]+2, sizeof(graphicsExtension));
|
||||
} else if (!strcmp(argv[i], "--ascii")) {
|
||||
asciiOutput = true;
|
||||
} else if (!strcmp(argv[i], "--timeout")) {
|
||||
@@ -220,13 +221,14 @@ int main(int argc, char *argv[])
|
||||
|
||||
// read startup file
|
||||
char startup_path_name[128];
|
||||
memset(startup_path_name, '\0', sizeof(startup_path_name));
|
||||
std::unique_ptr<TSAXParser> saxParser = std::make_unique<TSAXParser>();
|
||||
std::unique_ptr<PStartupHandler> startupHandler = std::make_unique<PStartupHandler>();
|
||||
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<PMusrCanvas*> canvasVector;
|
||||
PMusrCanvas *musrCanvas;
|
||||
PMusrCanvas *musrCanvas = nullptr;
|
||||
|
||||
bool ok = true;
|
||||
for (unsigned int i=0; i<msrHandler->GetMsrPlotList()->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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user