thanks, applied (r8164)

On 5/24/05, Vladimir Lipsky <[EMAIL PROTECTED]> wrote:
> > I notice that building with Perl 5.6.1 (on Win32 with  Perl 5.6.1
> > ActiveState-build 635 and MinGW) causes problem.
> >
> > $ parrot
> > Assertion failed: (int)io->image->bufused >= 0, file src/pmc_freeze.c,
> > line 478
> > abnormal program termination
> >
> > This assertion occurs in parrot_get_config_string().
> > The data parrot_config[] (file src/parrot_config.c) is not valid.
> > This data is the frozen version of runtime/parrot/include/config.fpmc
> > runtime/parrot/include/config.fpmc is a transformation of config_lib.pasm
> > And I don't found a real explanation ...
> 
> On windows, run-time libraries supplied with compilers distinguish between
> files open in the text and binary mode and the perl 5.6.* default open mode
> for plain files is text (this is not true as of perl 5.8.*, correct me if I
> am wrong). So after the following lines are executed
> 
>    $_ = <F>;
>    my @c = split '';
> 
> @c ends up containing only 208 chars, though config.pmc is of 11588 chars. I
> can't talk about implementation of fread in all the windows compillers, but
> MS VC's one does as follows: first it slurps the whole file in the buffer,
> then it checks if is running in the text mode, and if so, moves the pointer
> to the begin of the buffer and starts scanning it for CR-LF and CTRL-Z. If
> fread encounters CR-LF, it maps CR-LF to LF, if encounters CTRL-Z it stops
> the scanning and assigns the position, where CTRL-Z is found at, to the
> number of  bytes read.
> 
> In this particular case, fread gets CTRL-Z at 209 position, so the script
> parrot_config_c.pl produces incomplete frozen pmc representation which is of
> 208 chars only, and that's why assertion fails when thaw_pmc tries to thaw
> it.
> 
> The patch applied fixes the problem at least on my PC which runs perl 5.6.2
> 
> 
>

Reply via email to