From 7c474b4da316a203938b3632ae5a87ad78c86776 Mon Sep 17 00:00:00 2001 From: Carlos Montiers Date: Wed, 16 Jul 2014 22:22:05 -0400 Subject: [PATCH] __getmainargs return int, not void, and on error, it return -1 and let argv untouched, also argc. Added a if checking the result of it. --- win32/lib/crt1.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/win32/lib/crt1.c b/win32/lib/crt1.c index 3e1d17ff..bb92ba42 100644 --- a/win32/lib/crt1.c +++ b/win32/lib/crt1.c @@ -14,7 +14,7 @@ typedef struct int newmode; } _startupinfo; -void __getmainargs(int *pargc, char ***pargv, char ***penv, int globb, _startupinfo*); +int __getmainargs(int *pargc, char ***pargv, char ***penv, int globb, _startupinfo*); int main(int argc, char **argv, char **env); int _start(void) @@ -25,7 +25,12 @@ int _start(void) _controlfp(0x10000, 0x30000); __set_app_type(__CONSOLE_APP); - __getmainargs(&argc, &argv, &env, 0, &start_info); + if (__getmainargs(&argc, &argv, &env, 0, &start_info)) { + // __getmainargs failed because possible few memory on the heap. + fprintf(stderr, "Error getting the main args."); + // terminate with exit code of 3, similar to abort() + ExitProcess(3); + } ret = main(argc, argv, env); exit(ret); -- 2.11.4.GIT