changeset 30200:3e419a830e90

maint: merge stable to default.
author John W. Eaton <jwe@octave.org>
date Tue, 21 Sep 2021 13:32:41 -0400
parents a87e5f9d5446 (current diff) 37ddca7ad9cb (diff)
children 501fe2c8a880
files libinterp/corefcn/stack-frame.cc test/module.mk
diffstat 5 files changed, 52 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/stack-frame.cc	Tue Sep 21 12:30:32 2021 -0400
+++ b/libinterp/corefcn/stack-frame.cc	Tue Sep 21 13:32:41 2021 -0400
@@ -200,7 +200,7 @@
     void set_script_offsets (void);
 
     void set_script_offsets_internal (const std::map<std::string,
-                                                     symbol_record>& symbols);
+                                      symbol_record>& symbols);
 
     void resize_and_update_script_offsets (const symbol_record& sym);
 
@@ -1866,6 +1866,11 @@
             std::map<std::string, symbol_record> tmp_symbols;
             tmp_symbols[sym.name ()] = sym;
             set_script_offsets_internal (tmp_symbols);
+
+            // set_script_offsets_internal may have modified
+            // m_lexical_frame_offsets and m_value_offsets.
+
+            frame_offset = m_lexical_frame_offsets.at (data_offset);
           }
 
         data_offset = m_value_offsets.at (data_offset);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-61191/bug-61191.tst	Tue Sep 21 13:32:41 2021 -0400
@@ -0,0 +1,36 @@
+########################################################################
+##
+## Copyright (C) 2021 The Octave Project Developers
+##
+## See the file COPYRIGHT.md in the top-level directory of this
+## distribution or <https://octave.org/copyright/>.
+##
+## This file is part of Octave.
+##
+## Octave is free software: you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <https://www.gnu.org/licenses/>.
+##
+########################################################################
+
+%!test <61191>
+%! unwind_protect
+%!   addpath ("subdir");
+%!   omc_1 = rand (3, 1);
+%!   Tc_1 = rand (3, 1);
+%!   bug_61191
+%!   assert (omckk, omc_1);
+%!   assert (Tckk, Tc_1);
+%! unwind_protect_cleanup
+%!   rmpath ("subdir");
+%! end_unwind_protect
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-61191/module.mk	Tue Sep 21 13:32:41 2021 -0400
@@ -0,0 +1,5 @@
+bug_61191_TEST_FILES = \
+  %reldir%/bug-61191.tst \
+  %reldir%/subdir/bug_61191.m
+
+TEST_FILES += $(bug_61191_TEST_FILES)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-61191/subdir/bug_61191.m	Tue Sep 21 13:32:41 2021 -0400
@@ -0,0 +1,4 @@
+kk = 1;
+eval (['omckk = omc_' num2str(kk) ';']);
+eval (['Tckk = Tc_' num2str(kk) ';']);
+eval (['omc_' num2str(kk) ' = omckk;']);
--- a/test/module.mk	Tue Sep 21 12:30:32 2021 -0400
+++ b/test/module.mk	Tue Sep 21 13:32:41 2021 -0400
@@ -96,6 +96,7 @@
 include %reldir%/bug-60237/module.mk
 include %reldir%/bug-60882/module.mk
 include %reldir%/bug-61105/module.mk
+include %reldir%/bug-61191/module.mk
 include %reldir%/class-concat/module.mk
 include %reldir%/classdef/module.mk
 include %reldir%/classdef-multiple-inheritance/module.mk