Oh, that is nasty.  Compiling different files with different flags is
possible with C and can cause these problems.

I would suggest to find a way to compile the Perl code with 64 bit time_t,
and maybe redefine time_t to a 32 bit type where needed.  Not sure if this
will be possible, since the code is generated.

On 23 June 2016 at 08:10, Ken Takata <[email protected]> wrote:

> Hi Christian,
>
> 2016/6/23 Thu 5:26:13 UTC+9 Christian Brabandt wrote:
> > I don't exactly understand the if_perl.xs script, but could it be, that
> > sizeof(void *) is different for perl and vim? I assume that somehow the
> perl
> > interpreter uses a different size of wp->w_perl_private variable
> > (possibly 64bit vs. 32bit of the Vim executable) and this seems to cause
> > this issue.
> >
> > If I run perl -v I see this:
> > ..Projects\vim\src>perl -v
> >
> > ,----
> > | This is perl 5, version 22, subversion 1 (v5.22.1) built for
> MSWin32-x86-multi-thread-64int
> > | (with 1 registered patch, see perl -V for more detail)
> > |
> > | Copyright 1987-2015, Larry Wall
> > |
> > | Binary build 2201 [299574] provided by ActiveState
> http://www.ActiveState.com
> > | Built Dec 24 2015 12:36:28
> > |
> > | Perl may be copied only under the terms of either the Artistic License
> or the
> > | GNU General Public License, which may be found in the Perl 5 source
> kit.
> > |
> > | Complete documentation for Perl, including FAQ lists, should be found
> on
> > | this system using "man perl" or "perldoc perl".  If you have access to
> the
> > | Internet, point your browser at http://www.perl.org/, the Perl Home
> Page.
> > `----
> >
> > I can avoid this crash, by using this patch:
> >
> > diff -r 405c0bba9d1d src/window.c
> > --- a/src/window.c      Wed Jun 15 22:15:07 2016 +0200
> > +++ b/src/window.c      Wed Jun 22 20:09:33 2016 +0200
> > @@ -4549,7 +4549,8 @@
> >  #endif
> >
> >  #ifdef FEAT_PERL
> > -    perl_win_free(wp);
> > +    if (wp->w_perl_private)
> > +        perl_win_free(wp);
> >  #endif
> >
> > #ifdef FEAT_PYTHON
> >
> > But this breaks then later in the test_perl.vim Test with
> > From test_perl.vim:
> > Found errors in Test_SvREFCNT():
> > function RunTheTest[9]..Test_SvREFCNT line 15: Expected False but got
> 83852072
> > TEST FAILURE
> >
> > from
> https://ci.appveyor.com/project/chrisbra/vim-win32-installer-33v6e/build/45/job/eic9bm4hwr1le2ak#L4723
> >
> > But I don't know, how to fix this.
> >
> > For reference, this happens on a windows 64 bit system, when building
> > the 32bit version of gvim
>
> I confirmed that this happens when both if_perl and if_mzsch are enabled.
> https://ci.appveyor.com/project/k-takata/vim-win32-installer/history
>
> I'm not sure why if_mzsch is related, but now I found that v7.4.1925 causes
> this problem.  The size of time_t is the root cause.
>
> 32-bit versions of ActivePerl and Strawberry Perl require 32-bit time_t.
> So
> we define _USE_32BIT_TIME_T in if_perl.xs.  However recent versions of VC
> are
> 64-bit time_t by default. So the size of time_t is 64 bits in other files.
> The patch 1925 adds a time_t member to xfmark_T which is included in
> window_T,
> so the size of window_T becomes different in if_perl.xs and in other files.
>
> I confirmed that the following workaround fixes the problem.
> (But there should be much better solution...)
>
> --- a/src/structs.h
> +++ b/src/structs.h
> @@ -114,6 +114,9 @@ typedef struct xfilemark
>      char_u     *fname;         /* file name, used when fnum == 0 */
>  #ifdef FEAT_VIMINFO
>      time_t     time_set;
> +# ifdef _USE_32BIT_TIME_T
> +    int                padding;
> +# endif
>  #endif
>  } xfmark_T;
>
>
> Both test58 and test_perl.vim pass with this patch.
>
> Using 32-bit time_t in all part might be the easiest solution, but I don't
> want to use the solution.  The size of time_t should be 64 bits (except in
> if_perl.xs).
>
>
> Regards,
> Ken Takata
>
> --
> --
> You received this message from the "vim_dev" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups
> "vim_dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui