diff --git a/caretx.c b/caretx.c index fe884e46ef..67b8418795 100644 --- a/caretx.c +++ b/caretx.c @@ -126,6 +126,14 @@ Perl_set_caret_X(pTHX) { sv_setpvn(caret_x, buf, len); return; } +# elif defined(WIN32) + char *ansi; + WCHAR widename[MAX_PATH]; + GetModuleFileNameW(NULL, widename, sizeof(widename)/sizeof(WCHAR)); + ansi = win32_ansipath(widename); + sv_setpv(caret_x, ansi); + win32_free(ansi); + return; # endif /* Fallback to this: */ sv_setpv(caret_x, PL_origargv[0]); diff --git a/win32/perllib.c b/win32/perllib.c index 0e44a247be..cf7bf563d2 100644 --- a/win32/perllib.c +++ b/win32/perllib.c @@ -211,14 +211,8 @@ RunPerl(int argc, char **argv, char **env) { int exitstatus; PerlInterpreter *my_perl, *new_perl = NULL; - char *arg0 = argv[0]; - char *ansi = NULL; bool use_environ = (env == environ); - WCHAR widename[MAX_PATH]; - GetModuleFileNameW(NULL, widename, sizeof(widename)/sizeof(WCHAR)); - argv[0] = ansi = win32_ansipath(widename); - #ifdef PERL_GLOBAL_STRUCT #define PERLVAR(prefix,var,type) /**/ #define PERLVARA(prefix,var,type) /**/ @@ -269,11 +263,6 @@ RunPerl(int argc, char **argv, char **env) } #endif - /* Some RTLs may want to free argv[] after main() returns. */ - argv[0] = arg0; - if (ansi) - win32_free(ansi); - PERL_SYS_TERM(); return (exitstatus);