From: Carlos Montiers Date: Thu, 17 Jul 2014 02:22:05 +0000 (-0400) Subject: __getmainargs return int, not void, and on error, it return -1 and let argv untouched... X-Git-Tag: release_0_9_27~868 X-Git-Url: https://repo.or.cz/w/tinycc.git/commitdiff_plain/7c474b4da316a203938b3632ae5a87ad78c86776 __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. --- 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);