Skip to content

Commit 2acfb60

Browse files
committed
Fix
1 parent c718f90 commit 2acfb60

1 file changed

Lines changed: 13 additions & 8 deletions

File tree

src/core/database.rs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,30 +176,35 @@ impl DataBase {
176176
}
177177

178178
pub fn unset(&mut self, name: &str) -> Result<(), ExecError> {
179-
self.unset_var(name)?;
180-
self.functions.remove(name);
179+
if ! self.unset_var(name)? {
180+
self.functions.remove(name);
181+
}
181182
Ok(())
182183
}
183184

184-
pub fn unset_var(&mut self, name: &str) -> Result<(), ExecError> {
185+
pub fn unset_var(&mut self, name: &str) -> Result<bool, ExecError> {
186+
let mut removed = false;
185187
let num = self.params.len();
186-
for layer in (0..num).rev() {
187-
self.remove_param(layer, name)?;
188+
for layer in 0..num {
189+
removed |= self.remove_param(layer, name)?;
188190
}
189-
Ok(())
191+
Ok(removed)
190192
}
191193

192-
fn remove_param(&mut self, layer: usize, name: &str) -> Result<(), ExecError> {
194+
fn remove_param(&mut self, layer: usize, name: &str) -> Result<bool, ExecError> {
193195
if self.has_flag(name, 'r') {
194196
return Err(ExecError::VariableReadOnly(name.to_string()));
195197
}
196198

197199
if layer == 0 {
198200
unsafe{env::remove_var(name)};
199201
}
202+
203+
let mut removed = false;
200204
if self.params[layer].contains_key(name) {
201205
self.params[layer].remove(name);
206+
removed = true;
202207
}
203-
Ok(())
208+
Ok(removed)
204209
}
205210
}

0 commit comments

Comments
 (0)