---
 mingw-w64-crt/crt/crtexe.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/mingw-w64-crt/crt/crtexe.c b/mingw-w64-crt/crt/crtexe.c
index 1f3ad3a7a2b8..c68ac3734e8e 100644
--- a/mingw-w64-crt/crt/crtexe.c
+++ b/mingw-w64-crt/crt/crtexe.c
@@ -58,7 +58,7 @@ extern LPTOP_LEVEL_EXCEPTION_FILTER __mingw_oldexcpt_handler;
 
 extern void _pei386_runtime_relocator (void);
 long CALLBACK _gnu_exception_handler (EXCEPTION_POINTERS * exception_data);
-static void duplicate_ppstrings (int ac, _TCHAR ***av);
+static int duplicate_ppstrings (int ac, _TCHAR ***av);
 
 extern int _MINGW_INSTALL_DEBUG_MATHERR;
 
@@ -207,7 +207,9 @@ __tmainCRTStartup (void)
        if (ret < 0)
          _amsg_exit (8); /* _RT_SPACEARG */
 
-       duplicate_ppstrings (argc, &argv);
+       ret = duplicate_ppstrings (argc, &argv);
+       if (ret != 0)
+         _amsg_exit (8); /* _RT_SPACEARG */
 
        _initterm (__xc_a, __xc_z);
        __main (); /* C++ initialization. */
@@ -287,21 +289,24 @@ check_managed_app (void)
   return 0;
 }
 
-static void duplicate_ppstrings (int ac, _TCHAR ***av)
+static int duplicate_ppstrings (int ac, _TCHAR ***av)
 {
        _TCHAR **avl;
        int i;
        _TCHAR **n = (_TCHAR **) malloc (sizeof (_TCHAR *) * (ac + 1));
+       if (!n) return 1;
        
        avl=*av;
        for (i=0; i < ac; i++)
          {
                size_t l = sizeof (_TCHAR) * (_tcslen (avl[i]) + 1);
                n[i] = (_TCHAR *) malloc (l);
+               if (!n[i]) return 1;
                memcpy (n[i], avl[i], l);
          }
        n[i] = NULL;
        *av = n;
+       return 0;
 }
 
 int __cdecl atexit (_PVFV func)
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to