Changeset 1106
- Timestamp:
- Sep 23, 2007, 6:20:22 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/lib/startuphacks-win.c
r813 r1106 46 46 *******************************************************************************/ 47 47 /** argument count found by parse_args(). */ 48 static int g_cArgs; 48 static int g_cArgs = 0; 49 /** the argument vector, for __getmainargs(). */ 50 static char **g_papszArgs = NULL; 49 51 50 52 … … 55 57 const char *pszCmdLine; 56 58 char *pszCmdLineBuf; 57 char **papszArgs = NULL;58 59 int cb; 59 60 … … 63 64 GetModuleFileName(NULL, s_szProgramName, MAX_PATH); 64 65 s_szProgramName[MAX_PATH] = '\0'; 65 #if _MSC_VER >= 1400 66 #if _MSC_VER >= 1400 && !defined(CRTDLL) && !defined(_DLL) 66 67 _set_pgmptr(s_szProgramName); 67 68 #endif … … 78 79 */ 79 80 cb = parse_args(pszCmdLine, NULL, NULL); 80 papszArgs = malloc(sizeof(*papszArgs) * (g_cArgs + 2));81 if (! papszArgs)81 g_papszArgs = malloc(sizeof(*g_papszArgs) * (g_cArgs + 2)); 82 if (!g_papszArgs) 82 83 return -1; 83 84 pszCmdLineBuf = malloc(cb); 84 85 if (!pszCmdLineBuf) 85 86 return -1; 86 parse_args(pszCmdLine, papszArgs, pszCmdLineBuf);87 papszArgs[g_cArgs] =papszArgs[g_cArgs + 1] = NULL;87 parse_args(pszCmdLine, g_papszArgs, pszCmdLineBuf); 88 g_papszArgs[g_cArgs] = g_papszArgs[g_cArgs + 1] = NULL; 88 89 89 90 /* set return variables */ 90 91 __argc = g_cArgs; 91 __argv = papszArgs;92 __argv = g_papszArgs; 92 93 return 0; 93 94 } 95 96 97 /* when linking with the crtexe.c, the __getmainargs() call will redo the _setargv job inside the msvc*.dll. */ 98 int __cdecl __getmainargs(int *pargc, char ***pargv, char ***penvp, int dowildcard, /*_startupinfo*/ void *startinfo) 99 { 100 __argc = *pargc = g_cArgs; 101 __argv = *pargv = g_papszArgs; 102 *penvp = _environ; 103 return 0; 104 } 105 106 #if defined(_M_IX86) 107 int (__cdecl * _imp____getmainargs)(int *, char ***, char ***, int, /*_startupinfo*/ void *) = __getmainargs; 108 #else 109 int (__cdecl * __imp___getmainargs)(int *, char ***, char ***, int, /*_startupinfo*/ void *) = __getmainargs; 110 #endif 111 94 112 95 113
Note:
See TracChangeset
for help on using the changeset viewer.