From 12af47d18a7d5afd53291b805ce0162beee53637 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 24 Nov 2023 12:51:54 +0100 Subject: [PATCH] fix bug where #include included files would be able to access local variables and custom types. now, only globals are shared. --- mers_lib/src/info/mod.rs | 2 +- mers_lib/src/program/parsed/include_mers.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mers_lib/src/info/mod.rs b/mers_lib/src/info/mod.rs index 85b6573..0c71971 100755 --- a/mers_lib/src/info/mod.rs +++ b/mers_lib/src/info/mod.rs @@ -52,7 +52,7 @@ impl Local for Info { } fn duplicate(&self) -> Self { Self { - scopes: self.scopes.iter().map(|v| v.duplicate()).collect(), + scopes: vec![self.scopes[0].duplicate()], global: self.global.clone(), } } diff --git a/mers_lib/src/program/parsed/include_mers.rs b/mers_lib/src/program/parsed/include_mers.rs index 16dca44..70c3315 100644 --- a/mers_lib/src/program/parsed/include_mers.rs +++ b/mers_lib/src/program/parsed/include_mers.rs @@ -28,7 +28,7 @@ impl MersStatement for IncludeMers { comp: CompInfo, ) -> Result, CheckError> { let compiled: Arc> = - match self.include.compile(info, comp) { + match self.include.compile(&mut info.duplicate(), comp) { Ok(v) => Arc::new(v), Err(e) => { return Err(CheckError::new()