summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--starts/meaning-vm/level-0/memorystore.cpp1
-rw-r--r--starts/meaning-vm/level1.cpp4
2 files changed, 1 insertions, 4 deletions
diff --git a/starts/meaning-vm/level-0/memorystore.cpp b/starts/meaning-vm/level-0/memorystore.cpp
index edb75b1..04aadd5 100644
--- a/starts/meaning-vm/level-0/memorystore.cpp
+++ b/starts/meaning-vm/level-0/memorystore.cpp
@@ -163,6 +163,7 @@ void dealloc(ref r, ref source)
} catch(...) {
source.link(concepts::allocates(), r);
r.link(concepts::allocator(), source);
+ throw;
}
}
diff --git a/starts/meaning-vm/level1.cpp b/starts/meaning-vm/level1.cpp
index 51c7fdd..50c40a3 100644
--- a/starts/meaning-vm/level1.cpp
+++ b/starts/meaning-vm/level1.cpp
@@ -67,17 +67,13 @@ int main()
std::cout << intellect::level0::allocated() << " allocated" << std::endl;
while (true) {
try {
- std::cout << "calling dealloc" << std::endl;
intellect::level0::dealloc(intellect::level0::concepts::allocations(), intellect::level0::concepts::level0allocations());
} catch (intellect::level0::still_referenced_by &e) {
- std::cout << "expected exception" << std::endl;
if (e.topic->linked(intellect::level0::concepts::allocates(), e.referrer)) {
intellect::level0::dealloc(e.referrer, e.topic);
} else {
throw;
}
- } catch (...) {
- std::cout << "unexpected exception" << std::endl;
}
}
std::cout << intellect::level0::allocated() << " allocated" << std::endl;