summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpu/exec_context.cc2
-rw-r--r--sim/system.cc5
2 files changed, 6 insertions, 1 deletions
diff --git a/cpu/exec_context.cc b/cpu/exec_context.cc
index 20ab64bc4..06bd741f2 100644
--- a/cpu/exec_context.cc
+++ b/cpu/exec_context.cc
@@ -118,6 +118,8 @@ ExecContext::serialize(ostream &os)
for (int j=0; j<size; ++j) {
top = stack->top();
paramOut(os, csprintf("stackpos[%d]",j), top->name);
+ delete top;
+ stack->pop();
}
} else {
SERIALIZE_SCALAR(ctx);
diff --git a/sim/system.cc b/sim/system.cc
index 40c841ed5..951739462 100644
--- a/sim/system.cc
+++ b/sim/system.cc
@@ -148,7 +148,10 @@ System::serialize(std::ostream &os)
paramOut(os, csprintf("stacksize[%d]",i), size);
for (int j=0; j<size; ++j) {
top = stack->top();
- paramOut(os, csprintf("ctx[%d].stackpos[%d]",i,j), top->name);
+ paramOut(os, csprintf("ctx[%d].stackpos[%d]",i,j),
+ top->name);
+ delete top;
+ stack->pop();
}
}
}