Implement __p__wpgmptr, _wpgmptr.
Avoid using static storage for pgm pointers.
This commit is contained in:
parent
f554f8f58f
commit
622a343e9f
|
@ -62,8 +62,8 @@ char **MSVCRT___initenv = 0;
|
||||||
MSVCRT_wchar_t **MSVCRT___winitenv = 0;
|
MSVCRT_wchar_t **MSVCRT___winitenv = 0;
|
||||||
int MSVCRT_timezone;
|
int MSVCRT_timezone;
|
||||||
int MSVCRT_app_type;
|
int MSVCRT_app_type;
|
||||||
char MSVCRT_pgm[MAX_PATH];
|
|
||||||
char* MSVCRT__pgmptr = 0;
|
char* MSVCRT__pgmptr = 0;
|
||||||
|
WCHAR* MSVCRT__wpgmptr = 0;
|
||||||
|
|
||||||
/* Get a snapshot of the current environment
|
/* Get a snapshot of the current environment
|
||||||
* and construct the __p__environ array
|
* and construct the __p__environ array
|
||||||
|
@ -155,6 +155,11 @@ unsigned int* __p__commode(void) { return &MSVCRT__commode; }
|
||||||
*/
|
*/
|
||||||
char** __p__pgmptr(void) { return &MSVCRT__pgmptr; }
|
char** __p__pgmptr(void) { return &MSVCRT__pgmptr; }
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* __p__wpgmptr (MSVCRT.@)
|
||||||
|
*/
|
||||||
|
WCHAR** __p__wpgmptr(void) { return &MSVCRT__wpgmptr; }
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* __p__fmode (MSVCRT.@)
|
* __p__fmode (MSVCRT.@)
|
||||||
*/
|
*/
|
||||||
|
@ -284,9 +289,13 @@ void msvcrt_init_args(void)
|
||||||
MSVCRT___initenv= msvcrt_SnapshotOfEnvironmentA(NULL);
|
MSVCRT___initenv= msvcrt_SnapshotOfEnvironmentA(NULL);
|
||||||
MSVCRT___winitenv= msvcrt_SnapshotOfEnvironmentW(NULL);
|
MSVCRT___winitenv= msvcrt_SnapshotOfEnvironmentW(NULL);
|
||||||
|
|
||||||
MSVCRT_pgm[0] = '\0';
|
MSVCRT__pgmptr = HeapAlloc(GetProcessHeap(), 0, MAX_PATH);
|
||||||
GetModuleFileNameA(0, MSVCRT_pgm, sizeof(MSVCRT_pgm)/sizeof(MSVCRT_pgm[0]));
|
if (MSVCRT__pgmptr)
|
||||||
MSVCRT__pgmptr = MSVCRT_pgm;
|
GetModuleFileNameA(0, MSVCRT__pgmptr, MAX_PATH);
|
||||||
|
|
||||||
|
MSVCRT__wpgmptr = HeapAlloc(GetProcessHeap(), 0, MAX_PATH * sizeof(WCHAR));
|
||||||
|
if (MSVCRT__wpgmptr)
|
||||||
|
GetModuleFileNameW(0, MSVCRT__wpgmptr, MAX_PATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -298,6 +307,8 @@ void msvcrt_free_args(void)
|
||||||
if (MSVCRT___winitenv) HeapFree(GetProcessHeap(), 0, MSVCRT___winitenv);
|
if (MSVCRT___winitenv) HeapFree(GetProcessHeap(), 0, MSVCRT___winitenv);
|
||||||
if (MSVCRT__environ) HeapFree(GetProcessHeap(), 0, MSVCRT__environ);
|
if (MSVCRT__environ) HeapFree(GetProcessHeap(), 0, MSVCRT__environ);
|
||||||
if (MSVCRT__wenviron) HeapFree(GetProcessHeap(), 0, MSVCRT__wenviron);
|
if (MSVCRT__wenviron) HeapFree(GetProcessHeap(), 0, MSVCRT__wenviron);
|
||||||
|
if (MSVCRT__pgmptr) HeapFree(GetProcessHeap(), 0, MSVCRT__pgmptr);
|
||||||
|
if (MSVCRT__wpgmptr) HeapFree(GetProcessHeap(), 0, MSVCRT__wpgmptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
|
|
@ -128,7 +128,7 @@
|
||||||
@ cdecl __p__winmajor()
|
@ cdecl __p__winmajor()
|
||||||
@ cdecl __p__winminor()
|
@ cdecl __p__winminor()
|
||||||
@ cdecl __p__winver()
|
@ cdecl __p__winver()
|
||||||
@ stub __p__wpgmptr #()
|
@ cdecl __p__wpgmptr()
|
||||||
@ stub __pioinfo #()
|
@ stub __pioinfo #()
|
||||||
@ stub __pxcptinfoptrs #()
|
@ stub __pxcptinfoptrs #()
|
||||||
@ cdecl __set_app_type(long) MSVCRT___set_app_type
|
@ cdecl __set_app_type(long) MSVCRT___set_app_type
|
||||||
|
@ -533,7 +533,7 @@
|
||||||
@ cdecl _wmktemp(wstr)
|
@ cdecl _wmktemp(wstr)
|
||||||
@ varargs _wopen(wstr long)
|
@ varargs _wopen(wstr long)
|
||||||
@ stub _wperror #(wstr)
|
@ stub _wperror #(wstr)
|
||||||
@ stub _wpgmptr # extern
|
@ extern _wpgmptr MSVCRT__wpgmptr
|
||||||
@ stub _wpopen #(wstr wstr)
|
@ stub _wpopen #(wstr wstr)
|
||||||
@ cdecl _wputenv(wstr)
|
@ cdecl _wputenv(wstr)
|
||||||
@ cdecl _wremove(wstr)
|
@ cdecl _wremove(wstr)
|
||||||
|
|
Loading…
Reference in New Issue