diff -r vim73/src/if_mzsch.c vim73-patched/src/if_mzsch.c
797,798c797,804
<     void
< mzscheme_main(void)
---
> #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL)
> static __declspec(thread) void *tls_space;
> #endif
> 
> int
> mzscheme_main(argc, argv)
>     int		argc;
>     char	**argv;
799a806,808
> #if MZSCHEME_VERSION_MAJOR >= 500 && defined(WIN32) && defined(USE_THREAD_LOCAL)
>     scheme_register_tls_space(&tls_space, 0);
> #endif
802c811
<     scheme_main_setup(TRUE, mzscheme_env_main, 0, NULL);
---
>     scheme_main_setup(TRUE, mzscheme_env_main, argc, argv);
804c813
<     mzscheme_env_main(NULL, 0, NULL);
---
>     mzscheme_env_main(NULL, argc, argv);
809c818
< mzscheme_env_main(Scheme_Env *env, int argc UNUSED, char **argv UNUSED)
---
> mzscheme_env_main(Scheme_Env *env, int argc, char **argv)
840c849
<     main_loop(FALSE, FALSE);
---
>     main(argc, argv);
diff -r vim73/src/main.c vim73-patched/src/main.c
175a176,188
> #ifdef FEAT_MZSCHEME
>         {
>         static int mzscheme_trampolined_p = 0;
>         printf("in FEAT_MZSCHEME bit %d\n", mzscheme_trampolined_p);
>         if(!mzscheme_trampolined_p)
>             {
>             mzscheme_trampolined_p++;
>             return mzscheme_main(argc, argv);
>             }
>         }
> #endif
> 
> 
964d976
< #ifndef FEAT_MZSCHEME
966,968d977
< #else
<     mzscheme_main();
< #endif
diff -r vim73/src/proto/if_mzsch.pro vim73-patched/src/proto/if_mzsch.pro
17c17
< void mzscheme_main __ARGS((void));
---
> int mzscheme_main __ARGS((int, char**));
