From 11e9135f800afc500fbea21003011b95a446784c Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Mon, 5 Aug 2024 09:26:35 +0100 Subject: [PATCH] fix for avoiding inadvertent interpreter errors in CallExpr::IsPure() --- src/Expr.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Expr.cc b/src/Expr.cc index abbb07a3d4..d87526b654 100644 --- a/src/Expr.cc +++ b/src/Expr.cc @@ -4070,11 +4070,15 @@ bool CallExpr::IsPure() const { if ( IsError() ) return true; - if ( ! func->IsPure() ) + if ( func->Tag() != EXPR_NAME ) + // Indirect call, can't resolve up front. return false; - auto func_val = func->Eval(nullptr); + auto func_id = func->AsNameExpr()->Id(); + if ( ! func_id->IsGlobal() ) + return false; + auto func_val = func_id->GetVal(); if ( ! func_val ) return false;