#18897: Memory leak in polynomial_compiled.univar_pd
-------------------------------------+-------------------------------------
Reporter: slabbe | Owner:
Type: defect | Status: needs_review
Priority: major | Milestone: sage-6.8
Component: memleak | Resolution:
Keywords: | Merged in:
Authors: Simon King | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
u/SimonKing/memory_leak_compiled_polynomial|
79923d35f59362331a5aa006f8dbc6c329acd440
Dependencies: | Stopgaps:
-------------------------------------+-------------------------------------
Comment (by dimpase):
Replying to [comment:10 SimonKing]:
> Replying to [comment:9 SimonKing]:
> > It seems that a binary tree is NEVER completely deallocated. When
calling `binary_tree_dealloc(node)`, then the left and right descendants
of `node` are deallocated, but not `node` itself.
>
> To be precise: The pointer to `node` is freed, but one should call
`free_binary_tree_node(node)` instead.
the following looks more logical to me (diff over your patch):
{{{
diff --git a/src/sage/misc/binary_tree.pyx b/src/sage/misc/binary_tree.pyx
index 984ef57..c637d91 100644
--- a/src/sage/misc/binary_tree.pyx
+++ b/src/sage/misc/binary_tree.pyx
@@ -25,13 +25,11 @@ cdef void free_binary_tree_node(binary_tree_node
*self):
sage_free(self)
cdef void binary_tree_dealloc(binary_tree_node *self):
- # deallocate the descendants of self, but NOT self
if self.left != NULL:
binary_tree_dealloc(self.left)
- free_binary_tree_node(self.left)
if self.right != NULL:
binary_tree_dealloc(self.right)
- free_binary_tree_node(self.right)
+ free_binary_tree_node(self)
cdef void binary_tree_insert(binary_tree_node *self, int key, object
value):
@@ -210,7 +208,6 @@ cdef class BinaryTree:
"""
if self.head != NULL:
binary_tree_dealloc(self.head)
- free_binary_tree_node(self.head)
def insert(BinaryTree self, object key, object value = None):
"""
}}}
--
Ticket URL: <http://trac.sagemath.org/ticket/18897#comment:14>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.