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
1616 int newmode;
1717 } _startupinfo;
1818
19−int __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
23+void __getmainargs(int *pargc, char ***pargv, char ***penv, int globb, _startupinfo*);
2024 int main(int argc, char **argv, char **env);
2125
2226 int _start(void)
2327 {
2428 __TRY__
25− int argc; char **argv; char **env;
29+ int argc; char **argv; char **env; int ret;
2630 _startupinfo start_info = {0};
2731
2832 _controlfp(0x10000, 0x30000);
2933 __set_app_type(__CONSOLE_APP);
3034
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)
3239 {
33− int ret;
34−
35− ret = main(argc, argv, env);
36− exit(ret);
40+ ExitProcess(-1);
3741 }
38− // __getmainargs failed because possible few memory on the heap.
39− // end with exit code of 3, similar to abort()
40− ExitProcess(3);
42+
43+ ret = main(argc, argv, env);
44+ exit(ret);
4145 }
4246
4347 // =============================================

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