bram, we have to better to decide a time limit of fix report, and whether include to '7.2' or wait other's report.
- Yasuhiro Matsumoto On 6/26/08, mattn <[EMAIL PROTECTED]> wrote: > Hi, bram and all. > > I wrote a patch against if_perl.xs for 'perl 5.10'. > It seem that perl 5.10 should call Perl_sys_init3 for > initializing perl runtimes. andalso Perl_sys_term. > > On win32, vim should be import Perl_Ixxx functions from > perl510.dll for DYNAMIC_PERL. > > This patch is against vim72/trunk which was got from > https://vim.svn.sourceforge.net/svnroot/vim/branches/vim7.2 > But the patch will be applied on vim71 or vim72/cvshead. > > I checked some perl code on vim72. and it seems good for me. > Everyone, please try this and report to me. > > Thanks. > > -- > - Yasuhiro Matsumoto > > Index: if_perl.xs > =================================================================== > --- if_perl.xs (revision 1076) > +++ if_perl.xs (working copy) > @@ -163,6 +163,23 @@ > # define Perl_Isv_yes_ptr dll_Perl_Isv_yes_ptr > # define boot_DynaLoader dll_boot_DynaLoader > > +# define Perl_sys_init3 dll_Perl_sys_init3 > +# define Perl_sys_term dll_Perl_sys_term > +# define Perl_ISv_ptr dll_Perl_ISv_ptr > +# define Perl_Istack_max_ptr dll_Perl_Istack_max_ptr > +# define Perl_Istack_base_ptr dll_Perl_Istack_base_ptr > +# define Perl_Itmps_ix_ptr dll_Perl_Itmps_ix_ptr > +# define Perl_Itmps_floor_ptr dll_Perl_Itmps_floor_ptr > +# define Perl_IXpv_ptr dll_Perl_IXpv_ptr > +# define Perl_Ina_ptr dll_Perl_Ina_ptr > +# define Perl_Imarkstack_ptr_ptr dll_Perl_Imarkstack_ptr_ptr > +# define Perl_Imarkstack_max_ptr dll_Perl_Imarkstack_max_ptr > +# define Perl_Istack_sp_ptr dll_Perl_Istack_sp_ptr > +# define Perl_Iop_ptr dll_Perl_Iop_ptr > +# define Perl_call_list dll_Perl_call_list > +# define Perl_Iscopestack_ix_ptr dll_Perl_Iscopestack_ix_ptr > +# define Perl_Iunitcheckav_ptr dll_Perl_Iunitcheckav_ptr > + > #ifndef DYNAMIC_PERL /* just generating prototypes */ > typedef int HANDLE; > typedef int XSINIT_t; > @@ -250,6 +267,24 @@ > static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*); > static void (*boot_DynaLoader)_((pTHX_ CV*)); > > +#if (PERL_REVISION == 5) && (PERL_VERSION >= 10) > +static void (*Perl_sys_init3)(int* argc, char*** argv, char*** env); > +static void (*Perl_sys_term)(void); > +static SV** (*Perl_ISv_ptr)(register PerlInterpreter*); > +static SV*** (*Perl_Istack_max_ptr)(register PerlInterpreter*); > +static SV*** (*Perl_Istack_base_ptr)(register PerlInterpreter*); > +static XPV** (*Perl_IXpv_ptr)(register PerlInterpreter*); > +static I32* (*Perl_Itmps_ix_ptr)(register PerlInterpreter*); > +static I32* (*Perl_Itmps_floor_ptr)(register PerlInterpreter*); > +static STRLEN* (*Perl_Ina_ptr)(register PerlInterpreter*); > +static I32** (*Perl_Imarkstack_ptr_ptr)(register PerlInterpreter*); > +static I32** (*Perl_Imarkstack_max_ptr)(register PerlInterpreter*); > +static SV*** (*Perl_Istack_sp_ptr)(register PerlInterpreter*); > +static OP** (*Perl_Iop_ptr)(register PerlInterpreter*); > +static void (*Perl_call_list)(pTHX_ I32, AV*); > +static I32* (*Perl_Iscopestack_ix_ptr)(register PerlInterpreter*); > +static AV** (*Perl_Iunitcheckav_ptr)(register PerlInterpreter*); > +#endif > > /* > * Table of name to function pointer of perl. > @@ -319,6 +354,7 @@ > {"Perl_sv_setsv", (PERL_PROC*)&Perl_sv_setsv}, > #endif > {"Perl_sv_upgrade", (PERL_PROC*)&Perl_sv_upgrade}, > +#if (PERL_REVISION == 5) && (PERL_VERSION < 10) > {"Perl_Tstack_sp_ptr", (PERL_PROC*)&Perl_Tstack_sp_ptr}, > {"Perl_Top_ptr", (PERL_PROC*)&Perl_Top_ptr}, > {"Perl_Tstack_base_ptr", (PERL_PROC*)&Perl_Tstack_base_ptr}, > @@ -330,6 +366,25 @@ > {"Perl_TSv_ptr", (PERL_PROC*)&Perl_TSv_ptr}, > {"Perl_TXpv_ptr", (PERL_PROC*)&Perl_TXpv_ptr}, > {"Perl_Tna_ptr", (PERL_PROC*)&Perl_Tna_ptr}, > +#else > + {"Perl_sys_init3", (PERL_PROC*)&Perl_sys_init3}, > + {"Perl_sys_term", (PERL_PROC*)&Perl_sys_term}, > + {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr}, > + {"Perl_Istack_sp_ptr", (PERL_PROC*)&Perl_Istack_sp_ptr}, > + {"Perl_Iop_ptr", (PERL_PROC*)&Perl_Iop_ptr}, > + {"Perl_Istack_base_ptr", (PERL_PROC*)&Perl_Istack_base_ptr}, > + {"Perl_Istack_max_ptr", (PERL_PROC*)&Perl_Istack_max_ptr}, > + {"Perl_Itmps_ix_ptr", (PERL_PROC*)&Perl_Itmps_ix_ptr}, > + {"Perl_Itmps_floor_ptr", (PERL_PROC*)&Perl_Itmps_floor_ptr}, > + {"Perl_Imarkstack_ptr_ptr", (PERL_PROC*)&Perl_Imarkstack_ptr_ptr}, > + {"Perl_Imarkstack_max_ptr", (PERL_PROC*)&Perl_Imarkstack_max_ptr}, > + {"Perl_ISv_ptr", (PERL_PROC*)&Perl_ISv_ptr}, > + {"Perl_IXpv_ptr", (PERL_PROC*)&Perl_IXpv_ptr}, > + {"Perl_Ina_ptr", (PERL_PROC*)&Perl_Ina_ptr}, > + {"Perl_call_list", (PERL_PROC*)&Perl_call_list}, > + {"Perl_Iscopestack_ix_ptr", (PERL_PROC*)&Perl_Iscopestack_ix_ptr}, > + {"Perl_Iunitcheckav_ptr", (PERL_PROC*)&Perl_Iunitcheckav_ptr}, > +#endif > {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr}, > {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr}, > {"Perl_Isv_yes_ptr", (PERL_PROC*)&Perl_Isv_yes_ptr}, > @@ -395,12 +450,16 @@ > static void > perl_init() > { > - char *bootargs[] = { "VI", NULL }; > - static char *args[] = { "", "-e", "" }; > + char *bootargs[] = { "VI", NULL }; > + int argc = 3; > + static char *argv[] = { "", "-e", "" }; > > +#if (PERL_REVISION == 5) && (PERL_VERSION >= 10) > + Perl_sys_init3(&argc, (char***)&argv, NULL); > +#endif > perl_interp = perl_alloc(); > perl_construct(perl_interp); > - perl_parse(perl_interp, xs_init, 3, args, 0); > + perl_parse(perl_interp, xs_init, argc, argv, 0); > perl_call_argv("VIM::bootstrap", (long)G_DISCARD, bootargs); > VIM_init(); > #ifdef USE_SFIO > @@ -423,6 +482,9 @@ > perl_destruct(perl_interp); > perl_free(perl_interp); > perl_interp = NULL; > +#if (PERL_REVISION == 5) && (PERL_VERSION >= 10) > + Perl_sys_term(); > +#endif > } > #ifdef DYNAMIC_PERL > if (hPerlLib) > -- - Yasuhiro Matsumoto --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---
