1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-10 17:11:17 +02:00

AudacityApp::ParseCommandLine returns smart pointer

This commit is contained in:
Paul Licameli 2016-04-09 23:02:25 -04:00
parent 4022d1d5b2
commit 414d0faa65
2 changed files with 14 additions and 28 deletions

View File

@ -640,7 +640,7 @@ public:
return NULL; return NULL;
} }
// Trust wxWidgets framework to delete it // Trust wxWidgets framework to DELETE it
return safenew IPCConn(); return safenew IPCConn();
}; };
}; };
@ -1143,6 +1143,10 @@ AudacityApp::AudacityApp()
#endif #endif
} }
AudacityApp::~AudacityApp()
{
}
// The `main program' equivalent, creating the windows and returning the // The `main program' equivalent, creating the windows and returning the
// main frame // main frame
bool AudacityApp::OnInit() bool AudacityApp::OnInit()
@ -1323,19 +1327,15 @@ bool AudacityApp::OnInit()
// Parse command line and handle options that might require // Parse command line and handle options that might require
// immediate exit...no need to initialize all of the audio // immediate exit...no need to initialize all of the audio
// stuff to display the version string. // stuff to display the version string.
wxCmdLineParser *parser = ParseCommandLine(); auto parser = ParseCommandLine();
if (!parser) if (!parser)
{ {
delete parser;
// Either user requested help or a parsing error occured // Either user requested help or a parsing error occured
exit(1); exit(1);
} }
if (parser->Found(wxT("v"))) if (parser->Found(wxT("v")))
{ {
delete parser;
wxFprintf(stderr, wxT("Audacity v%s\n"), AUDACITY_VERSION_STRING); wxFprintf(stderr, wxT("Audacity v%s\n"), AUDACITY_VERSION_STRING);
exit(0); exit(0);
} }
@ -1345,8 +1345,6 @@ bool AudacityApp::OnInit()
{ {
if (lval < 256 || lval > 100000000) if (lval < 256 || lval > 100000000)
{ {
delete parser;
wxPrintf(_("Block size must be within 256 to 100000000\n")); wxPrintf(_("Block size must be within 256 to 100000000\n"));
exit(1); exit(1);
} }
@ -1463,7 +1461,6 @@ bool AudacityApp::OnInit()
{ {
// Important: Prevent deleting any temporary files! // Important: Prevent deleting any temporary files!
DirManager::SetDontDeleteTempFiles(); DirManager::SetDontDeleteTempFiles();
delete parser;
QuitAudacity(true); QuitAudacity(true);
return false; return false;
} }
@ -1475,8 +1472,6 @@ bool AudacityApp::OnInit()
{ {
if (parser->Found(wxT("t"))) if (parser->Found(wxT("t")))
{ {
delete parser;
RunBenchmark(NULL); RunBenchmark(NULL);
return false; return false;
} }
@ -1491,8 +1486,6 @@ bool AudacityApp::OnInit()
#endif #endif
} }
delete parser;
gInited = true; gInited = true;
ModuleManager::Get().Dispatch(AppInitialized); ModuleManager::Get().Dispatch(AppInitialized);
@ -1664,7 +1657,7 @@ bool AudacityApp::CreateSingleInstanceChecker(const wxString &dir)
else if ( mChecker->IsAnotherRunning() ) { else if ( mChecker->IsAnotherRunning() ) {
// Parse the command line to ensure correct syntax, but // Parse the command line to ensure correct syntax, but
// ignore options and only use the filenames, if any. // ignore options and only use the filenames, if any.
wxCmdLineParser *parser = ParseCommandLine(); auto parser = ParseCommandLine();
if (!parser) if (!parser)
{ {
// Complaints have already been made // Complaints have already been made
@ -1703,10 +1696,7 @@ bool AudacityApp::CreateSingleInstanceChecker(const wxString &dir)
delete conn; delete conn;
if (ok) if (ok)
{
delete parser;
return false; return false;
}
} }
wxMilliSleep(10); wxMilliSleep(10);
@ -1738,7 +1728,6 @@ bool AudacityApp::CreateSingleInstanceChecker(const wxString &dir)
} }
sock->Destroy(); sock->Destroy();
delete parser;
return false; return false;
} }
@ -1755,7 +1744,6 @@ bool AudacityApp::CreateSingleInstanceChecker(const wxString &dir)
_("Use the New or Open commands in the currently running Audacity\nprocess to open multiple projects simultaneously.\n"); _("Use the New or Open commands in the currently running Audacity\nprocess to open multiple projects simultaneously.\n");
wxMessageBox(prompt, _("Audacity is already running"), wxMessageBox(prompt, _("Audacity is already running"),
wxOK | wxICON_ERROR); wxOK | wxICON_ERROR);
delete parser;
delete mChecker; delete mChecker;
return false; return false;
} }
@ -1826,9 +1814,9 @@ void AudacityApp::OnSocketEvent(wxSocketEvent & evt)
#endif #endif
wxCmdLineParser *AudacityApp::ParseCommandLine() std::unique_ptr<wxCmdLineParser> AudacityApp::ParseCommandLine()
{ {
wxCmdLineParser *parser = new wxCmdLineParser(argc, argv); auto parser = std::make_unique<wxCmdLineParser>(argc, argv);
if (!parser) if (!parser)
{ {
return NULL; return NULL;
@ -1861,13 +1849,9 @@ wxCmdLineParser *AudacityApp::ParseCommandLine()
// Run the parser // Run the parser
if (parser->Parse() == 0) if (parser->Parse() == 0)
{ return std::move(parser);
return parser;
}
delete parser; return{};
return NULL;
} }
// static // static

View File

@ -16,6 +16,7 @@
#include "Audacity.h" #include "Audacity.h"
#include "MemoryX.h"
#include <wx/app.h> #include <wx/app.h>
#include <wx/cmdline.h> #include <wx/cmdline.h>
#include <wx/dir.h> #include <wx/dir.h>
@ -100,6 +101,7 @@ class BlockFile;
class AudacityApp final : public wxApp { class AudacityApp final : public wxApp {
public: public:
AudacityApp(); AudacityApp();
~AudacityApp();
bool OnInit(void) override; bool OnInit(void) override;
int OnExit(void) override; int OnExit(void) override;
void OnFatalException() override; void OnFatalException() override;
@ -217,7 +219,7 @@ class AudacityApp final : public wxApp {
bool InitTempDir(); bool InitTempDir();
bool CreateSingleInstanceChecker(const wxString &dir); bool CreateSingleInstanceChecker(const wxString &dir);
wxCmdLineParser *ParseCommandLine(); std::unique_ptr<wxCmdLineParser> ParseCommandLine();
bool mWindowRectAlreadySaved; bool mWindowRectAlreadySaved;