From caef9e266b4f78b238d12ca138e22c6f9adaa881 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Fri, 16 Apr 2021 17:36:08 +0200 Subject: [PATCH] Preprocessor: fix crash in DataTree::operator=() with model local variables Also add a regression test. Closes: #1782 --- preprocessor | 2 +- tests/example1_mlv.mod | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/preprocessor b/preprocessor index e3c716faba..7b3df21f11 160000 --- a/preprocessor +++ b/preprocessor @@ -1 +1 @@ -Subproject commit e3c716faba552bb59146b3b83d6c2fef5e650299 +Subproject commit 7b3df21f11b81c83938abd982575260ab61c993a diff --git a/tests/example1_mlv.mod b/tests/example1_mlv.mod index 19b3608ed0..ea9dbf029c 100644 --- a/tests/example1_mlv.mod +++ b/tests/example1_mlv.mod @@ -16,8 +16,14 @@ theta = 2.95; phi = 0.1; +/* The following statement is a regression test for #1782. + Here the “foo” variable definition depends on “bar”, but the symbol ID of + “foo” will be smaller than the symbol ID of “bar”. */ +model_local_variable foo $\text{foo}$; + model; -#foo = (exp(b)*c)/(exp(b(+1))*c(+1)); +#bar = exp(b)*c; +#foo = bar/(exp(b(+1))*c(+1)); c*theta*h^(1+psi)=(1-alpha)*y; k = beta*(foo *(exp(b(+1))*alpha*y(+1)+(1-delta)*k)); -- GitLab