- if (ex::last_created_or_assigned_bp_can_be_converted_to_ex()) {
- string varname = "Out"+ToString(++out_count);
+ string varname = "Out"+ToString(++out_count);
+ if (retval.obj.i!=ex::last_created_or_assigned_exp) {
+ // an ex was returned, but this is not the ex which was created last
+ // => this is not a temporary ex, but one that resides safely in memory
+
+ // cout << "warning: using ex from retval (experimental)" << endl;
+ ex::dummy_bp=((ex *)(void *)(retval.obj.i))->bp;
+ exec_tempfile("ex "+varname+"(*ex::dummy_bp);");
+ } else if (ex::last_created_or_assigned_bp_can_be_converted_to_ex()) {