diff options
author | Jan Dubois <jand@activestate.com> | 2009-11-16 14:43:20 -0800 |
---|---|---|
committer | Jan Dubois <jand@activestate.com> | 2009-11-16 15:03:13 -0800 |
commit | 490354310ada83dc35c6cfd9dd59ad62781fcaf7 (patch) | |
tree | ba855fe2f20544b7dd9a5edd85584da3e2bff00b /toke.c | |
parent | e69777c1f1a5fd88505d2345bb3a27e8b7266a68 (diff) | |
download | perl-490354310ada83dc35c6cfd9dd59ad62781fcaf7.tar.gz |
Fix crash in refactored lexer internals
Commit f0e67a1d29102aa9905aecf2b0f98449697d5af3 changed the control
flow so that PerlIO_tell(PL_rsfp) could be called when PL_rsfp was
NULL, which produces a crash at least on Windows with the MSVCRT
runtime.
This change moves the detection if PL_rsfp is NULL or not closer to
the location where is is actually tested, which gets rid of the
crashes. I however have *not* verified if the changes in control
flow in f0e67a1d are otherwise correct or not.
Diffstat (limited to 'toke.c')
-rw-r--r-- | toke.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -4315,7 +4315,6 @@ Perl_yylex(pTHX) } do { U32 fake_eof = 0; - bof = PL_rsfp ? TRUE : FALSE; if (0) { fake_eof: fake_eof = LEX_FAKE_EOF; @@ -4332,6 +4331,7 @@ Perl_yylex(pTHX) s = PL_bufptr; /* If it looks like the start of a BOM or raw UTF-16, * check if it in fact is. */ + bof = PL_rsfp ? TRUE : FALSE; if (bof && (*s == 0 || *(U8*)s == 0xEF || |