diff options
| -rw-r--r-- | internal/rpn/operations_helpers.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/internal/rpn/operations_helpers.go b/internal/rpn/operations_helpers.go index afdfa0e..03c0bb1 100644 --- a/internal/rpn/operations_helpers.go +++ b/internal/rpn/operations_helpers.go @@ -79,6 +79,10 @@ func popAll(stack *Stack, op string) ([]StackValue, error) { for stack.Len() > 0 { val, err := stack.Pop() if err != nil { + // Restore already-popped values in reverse order (top of stack first). + for i := len(values) - 1; i >= 0; i-- { + stack.Push(values[i]) + } return nil, fmt.Errorf("%s: failed to pop: %w", op, err) } values = append(values, val) |
