Null-terminate arrays returned from wxCmdLineArgsArray

This is required for compatibility with the real argv array that this class is
supposed to emulate.

See #17531.

(cherry picked from commit 189e4c5024)
This commit is contained in:
Vadim Zeitlin
2016-05-13 15:40:22 +02:00
parent 143e55b8df
commit 990ebe2dc2
2 changed files with 7 additions and 2 deletions

View File

@@ -581,6 +581,7 @@ All:
- Fix wxFileName::MakeRelativeTo() for directory relatively to itself. - Fix wxFileName::MakeRelativeTo() for directory relatively to itself.
- Fix wxLocale::IsOk() return true even if setting the locale failed. - Fix wxLocale::IsOk() return true even if setting the locale failed.
- Null-terminate wxApp::argv for compatibility with the real argv.
Unix: Unix:

View File

@@ -51,9 +51,11 @@ public:
if ( !m_argsA ) if ( !m_argsA )
{ {
const size_t count = m_args.size(); const size_t count = m_args.size();
m_argsA = new char *[count]; m_argsA = new char *[count + 1];
for ( size_t n = 0; n < count; n++ ) for ( size_t n = 0; n < count; n++ )
m_argsA[n] = wxStrdup(m_args[n].ToAscii()); m_argsA[n] = wxStrdup(m_args[n].ToAscii());
m_argsA[count] = NULL;
} }
return m_argsA; return m_argsA;
@@ -64,9 +66,11 @@ public:
if ( !m_argsW ) if ( !m_argsW )
{ {
const size_t count = m_args.size(); const size_t count = m_args.size();
m_argsW = new wchar_t *[count]; m_argsW = new wchar_t *[count + 1];
for ( size_t n = 0; n < count; n++ ) for ( size_t n = 0; n < count; n++ )
m_argsW[n] = wxStrdup(m_args[n].wc_str()); m_argsW[n] = wxStrdup(m_args[n].wc_str());
m_argsW[count] = NULL;
} }
return m_argsW; return m_argsW;