From 3e9759099061225504d432a2dfd1cac2bc039f75 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Thu, 26 Mar 2026 17:08:39 -0400 Subject: [PATCH] xo-interpreter2: VSM.start_eval() returns const ref If copied get unstable value, since may be moved away on next gc --- include/xo/interpreter2/vsm/DVirtualSchematikaMachine.hpp | 2 +- src/interpreter2/DVirtualSchematikaMachine.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/xo/interpreter2/vsm/DVirtualSchematikaMachine.hpp b/include/xo/interpreter2/vsm/DVirtualSchematikaMachine.hpp index 9f8f49d8..46de95f3 100644 --- a/include/xo/interpreter2/vsm/DVirtualSchematikaMachine.hpp +++ b/include/xo/interpreter2/vsm/DVirtualSchematikaMachine.hpp @@ -119,7 +119,7 @@ namespace xo { /** evaluate expression @p expr * Require: must first start interactive/batch session **/ - VsmResult start_eval(obj expr); + const VsmResult & start_eval(obj expr); /** borrow calling thread to run indefinitely, * until halt instruction diff --git a/src/interpreter2/DVirtualSchematikaMachine.cpp b/src/interpreter2/DVirtualSchematikaMachine.cpp index 5c3d35d2..8edc0538 100644 --- a/src/interpreter2/DVirtualSchematikaMachine.cpp +++ b/src/interpreter2/DVirtualSchematikaMachine.cpp @@ -225,7 +225,7 @@ namespace xo { return VsmResultExt(VsmResult(*p_value), remaining); } - VsmResult + const VsmResult & DVirtualSchematikaMachine::start_eval(obj expr) { this->pc_ = VsmInstr::c_eval;