simpleeval icon indicating copy to clipboard operation
simpleeval copied to clipboard

Crashes when evaluating an empty string

Open Gnarflord opened this issue 4 years ago • 2 comments

When giving simpleeval an empty string it raises this error: Traceback (most recent call last):

Traceback (most recent call last):
  File "simpleeval.py", line 613, in simple_eval
    return s.eval(expr)
  File "simpleeval.py", line 334, in eval
    return self._eval(parsed.body[0].value)
IndexError: list index out of range

I propose to either throw an appropriate error or maybe return something. Wether that'd be an empty string or None is too philosophical for me but maybe there's an PIP on this? Anyways, something like this should suffice:

parsed = ast.parse(expr.strip())
if len(parsed.body) > 0:
    # and evaluate if not empty:
    return self._eval(parsed.body[0].value)
else:
    return None

Gnarflord avatar Nov 19 '19 08:11 Gnarflord

An interesting note: eval("") in normal Python raises a SyntaxError.

>>> eval("")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 0

    ^
SyntaxError: unexpected EOF while parsing

zhudotexe avatar Nov 21 '19 20:11 zhudotexe

Looks like this can be closed due to #108.

kurtmckee avatar Oct 18 '22 12:10 kurtmckee