Prevents panic in some strange cases. Seen in #721

This commit is contained in:
Adrián Arroyo Calle
2021-11-15 00:17:40 +01:00
parent 75b01d5021
commit 387732d2f9

View File

@@ -481,6 +481,10 @@ impl<'a, R: Read> Parser<'a, R> {
return false;
}
if self.terms.len() < 1 + arity {
return false;
}
let stack_len = self.stack.len() - 2 * arity - 1;
let idx = self.terms.len() - arity;
@@ -638,6 +642,13 @@ impl<'a, R: Read> Parser<'a, R> {
term
};
if arity > self.terms.len() {
return Err(ParserError::IncompleteReduction(
self.lexer.line_num,
self.lexer.col_num
))
}
let idx = self.terms.len() - arity;
let list = self.terms.drain(idx..).rev().fold(end_term, |acc, t| {