{
const char *s = NULL;
yy_parser *parser, *oparser;
+ const U8* first_bad_char_loc;
+
if (flags && flags & ~LEX_START_FLAGS)
Perl_croak(aTHX_ "Lexing code internal error (%s)", "lex_start");
if (line) {
STRLEN len;
s = SvPV_const(line, len);
+
+ if (SvUTF8(line) && ! is_utf8_string_loc((U8 *) s,
+ SvCUR(line),
+ &first_bad_char_loc))
+ {
+ _force_out_malformed_utf8_message(first_bad_char_loc,
+ (U8 *) s + SvCUR(line),
+ 0,
+ 1 /* 1 means die */ );
+ NOT_REACHED; /* NOTREACHED */
+ }
+
parser->linestr = flags & LEX_START_COPIED
? SvREFCNT_inc_simple_NN(line)
: newSVpvn_flags(s, len, SvUTF8(line));