Skip to content

Commit d6a346b

Browse files
committed
Restore logic to reserve a free slot for zero token
1 parent c36bbe8 commit d6a346b

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

src/flatbuffers/unsafe_tools.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,10 @@ impl<T: Default, const MAX_SIZE: usize> StackVector<T, MAX_SIZE> {
130130
self.size == 0
131131
}
132132

133+
pub fn get_free_capacity(&self) -> usize {
134+
MAX_SIZE - self.size
135+
}
136+
133137
pub fn clear(&mut self) {
134138
self.size = 0;
135139
}

src/utils.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ fn fast_tokenizer_no_regex(
4444
let mut preceding_ch: Option<char> = None; // Used to check if a '*' is not just before a token
4545

4646
for (i, c) in pattern.char_indices() {
47+
if tokens_buffer.get_free_capacity() <= 1 {
48+
return; // reserve one free slot for the zero token
49+
}
4750
if is_allowed_code(c) {
4851
if !inside {
4952
inside = true;

0 commit comments

Comments
 (0)