summaryrefslogtreecommitdiff
path: root/toke.c
diff options
context:
space:
mode:
authorJan Dubois <jand@activestate.com>2009-11-16 14:43:20 -0800
committerJan Dubois <jand@activestate.com>2009-11-16 15:03:13 -0800
commit490354310ada83dc35c6cfd9dd59ad62781fcaf7 (patch)
treeba855fe2f20544b7dd9a5edd85584da3e2bff00b /toke.c
parente69777c1f1a5fd88505d2345bb3a27e8b7266a68 (diff)
downloadperl-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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/toke.c b/toke.c
index 6793f7b866..6b5ef4f3d9 100644
--- a/toke.c
+++ b/toke.c
@@ -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 ||