From b8701fcf180f7f096262c62bce3453f3306e626a Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 11 Apr 2024 16:19:21 -0700 Subject: [PATCH] Check EOF when checking a large char set that contains the null character --- cli/src/generate/render.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cli/src/generate/render.rs b/cli/src/generate/render.rs index bd482475..df57dcdc 100644 --- a/cli/src/generate/render.rs +++ b/cli/src/generate/render.rs @@ -759,12 +759,20 @@ impl Generator { } if let Some(large_char_set_ix) = large_char_set_ix { + let large_set = &self.large_character_sets[large_char_set_ix].1; + let check_eof = large_set.contains('\0'); + if check_eof { + add!(self, "(!eof && ") + } add!( self, "set_contains({}, {}, lookahead)", - self.large_character_set_constant_names[large_char_set_ix], - self.large_character_sets[large_char_set_ix].1.range_count(), + &self.large_character_set_constant_names[large_char_set_ix], + large_set.range_count(), ); + if check_eof { + add!(self, ")"); + } } if !asserted_chars.is_empty() {