[libgee] Fix problem of partially releasing hp context
- From: Maciej Marcin Piechotka <mpiechotka src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgee] Fix problem of partially releasing hp context
- Date: Fri, 20 Jan 2012 16:22:52 +0000 (UTC)
commit 18a9602cbffc476f03317b49e368b18d46ce4e96
Author: Maciej Piechotka <uzytkownik2 gmail com>
Date: Fri Jan 20 15:24:13 2012 +0000
Fix problem of partially releasing hp context
gee/hazardpointer.vala | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/gee/hazardpointer.vala b/gee/hazardpointer.vala
index 522c469..b0ac2de 100644
--- a/gee/hazardpointer.vala
+++ b/gee/hazardpointer.vala
@@ -539,6 +539,7 @@ public class Gee.HazardPointer<G> { // FIXME: Make it a struct
stderr.printf ("Exiting context %p (policy %s, parent %p)\n", this, _policy != null ? _policy.to_string () : null, _parent);
#endif
int size = _to_free.size;
+ bool clean_parent = false;
if (size > 0) {
ArrayList<FreeNode *>? remaining;
if (_parent == null || size >= THRESHOLD)
@@ -548,11 +549,15 @@ public class Gee.HazardPointer<G> { // FIXME: Make it a struct
if (remaining != null) {
assert (_parent != null);
_parent->_to_free.add_all (remaining);
- if (_parent->_to_free.size >= THRESHOLD)
- HazardPointer.try_free (_parent->_to_free);
+ clean_parent = true;
}
}
+#if DEBUG
+ stderr.printf ("Setting current context to %p\n", _parent);
+#endif
_current_context.set (_parent, null);
+ if (clean_parent)
+ HazardPointer.try_free (_parent->_to_free);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]