History

__getmainargs compatibility checking success

Carlos Montiers committed 11 years ago

Commit f40b8221 parent 1e07ea71 file · +14 −10Browse files

Unified · Split

win32/lib/crt1.c+14−10
@@ -16,28 +16,32 @@ typedef struct · 15 unmodified lines
16 int newmode;16 int newmode;
17} _startupinfo;17} _startupinfo;
18 18
19int __getmainargs(int *pargc, char ***pargv, char ***penv, int globb, _startupinfo*);19// prototype of __getmainargs:
20// in msvcrt v6.0 : return void
21// in msvcrt v7.0 : return int
22// using first for compatibility
23void __getmainargs(int *pargc, char ***pargv, char ***penv, int globb, _startupinfo*);
20int main(int argc, char **argv, char **env);24int main(int argc, char **argv, char **env);
21 25
22int _start(void)26int _start(void)
23{27{
24 __TRY__28 __TRY__
25 int argc; char **argv; char **env;29 int argc; char **argv; char **env; int ret;
26 _startupinfo start_info = {0};30 _startupinfo start_info = {0};
27 31
28 _controlfp(0x10000, 0x30000);32 _controlfp(0x10000, 0x30000);
29 __set_app_type(__CONSOLE_APP);33 __set_app_type(__CONSOLE_APP);
30 34
31 if (! __getmainargs(&argc, &argv, &env, 0, &start_info))35 argv = NULL;
36 __getmainargs(&argc, &argv, &env, 0, &start_info);
37 // check success comparing if argv now is not NULL
38 if (! argv)
32 {39 {
33 int ret;40 ExitProcess(-1);
34
35 ret = main(argc, argv, env);
36 exit(ret);
37 }41 }
38 // __getmainargs failed because possible few memory on the heap.42
39 // end with exit code of 3, similar to abort()43 ret = main(argc, argv, env);
40 ExitProcess(3);44 exit(ret);
41}45}
42 46
43// =============================================47// =============================================

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t