diff --git a/mingw-w64-crt/crt/crtexe.c b/mingw-w64-crt/crt/crtexe.c
index 834149b..4134b94 100644
--- a/mingw-w64-crt/crt/crtexe.c
+++ b/mingw-w64-crt/crt/crtexe.c
@@ -58,7 +58,7 @@
 
 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;
 
@@ -215,7 +215,9 @@
 	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. */
@@ -286,21 +288,24 @@
   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)
