Function _(w)setargv() provided by the application itself (not by the CRT
DLL runtime library) can fail, which is indicated by the return value.
Check for this failure and call _amsg_exit(_RT_SPACEARG) on error. Same
behavior has Visual C++ startup code.
---
mingw-w64-crt/crt/crtexe.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/mingw-w64-crt/crt/crtexe.c b/mingw-w64-crt/crt/crtexe.c
index ec7fa74dc37b..4f058a8e1f5f 100644
--- a/mingw-w64-crt/crt/crtexe.c
+++ b/mingw-w64-crt/crt/crtexe.c
@@ -95,6 +95,7 @@ __mingw_invalidParameterHandler (const wchar_t *
__UNUSED_PARAM_1(expression),
static int __cdecl
pre_c_init (void)
{
+ int ret;
managedapp = check_managed_app ();
if (__mingw_app_type)
__set_app_type(_GUI_APP);
@@ -105,10 +106,12 @@ pre_c_init (void)
* __p__commode() = _commode;
#ifdef _UNICODE
- _wsetargv();
+ ret = _wsetargv();
#else
- _setargv();
+ ret = _setargv();
#endif
+ if (ret < 0)
+ _amsg_exit(8); /* _RT_SPACEARG */
if (_MINGW_INSTALL_DEBUG_MATHERR == 1)
{
__setusermatherr (_matherr);
--
2.20.1
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public