@@ -147,6 +147,8 @@ static char *(main_errors[]) =
147147#define ME_INVALID_ARG 5
148148};
149149
150+ static char_u * start_dir = NULL ; /* current working dir on startup */
151+
150152#ifndef PROTO /* don't want a prototype for main() */
151153#ifndef NO_VIM_MAIN /* skip this for unittests */
152154 int
168170 char_u * fname = NULL ; /* file name from command line */
169171 mparm_T params ; /* various parameters passed between
170172 * main() and other functions. */
171- char_u * cwd = NULL ; /* current workding dir on startup */
172173#ifdef STARTUPTIME
173174 int i ;
174175#endif
@@ -420,17 +421,17 @@ main
420421 */
421422 if (!params .literal )
422423 {
423- cwd = alloc (MAXPATHL );
424- if (cwd != NULL )
425- mch_dirname (cwd , MAXPATHL );
424+ start_dir = alloc (MAXPATHL );
425+ if (start_dir != NULL )
426+ mch_dirname (start_dir , MAXPATHL );
426427 /* Temporarily add '(' and ')' to 'isfname'. These are valid
427428 * filename characters but are excluded from 'isfname' to make
428429 * "gf" work on a file name in parenthesis (e.g.: see vim.h). */
429430 do_cmdline_cmd ((char_u * )":set isf+=(,)" );
430431 alist_expand (NULL , 0 );
431432 do_cmdline_cmd ((char_u * )":set isf&" );
432- if (cwd != NULL )
433- mch_chdir ((char * )cwd );
433+ if (start_dir != NULL )
434+ mch_chdir ((char * )start_dir );
434435 }
435436#endif
436437 fname = alist_name (& GARGLIST [0 ]);
456457 * If the cd fails, it doesn't matter.
457458 */
458459 (void )vim_chdirfile (fname );
459- if (cwd != NULL )
460- mch_dirnamem ( cwd , MAXPATHL );
460+ if (start_dir != NULL )
461+ mch_dirname ( start_dir , MAXPATHL );
461462 }
462463#endif
463464 TIME_MSG ("expanding arguments" );
512513 expand_env ((char_u * )"$HOME" , NameBuff , MAXPATHL );
513514 vim_chdir (NameBuff );
514515 }
515- if (cwd != NULL )
516- mch_dirname (cwd , MAXPATHL );
516+ if (start_dir != NULL )
517+ mch_dirname (start_dir , MAXPATHL );
517518 }
518519 }
519520#endif
@@ -953,9 +954,9 @@ vim_main2(int argc UNUSED, char **argv UNUSED)
953954 * If opened more than one window, start editing files in the other
954955 * windows.
955956 */
956- edit_buffers (& params , cwd );
957+ edit_buffers (& params , start_dir );
957958#endif
958- vim_free (cwd );
959+ vim_free (start_dir );
959960
960961#ifdef FEAT_DIFF
961962 if (params .diff_mode )
0 commit comments