|
|
|
@ -122,20 +122,6 @@ _memSegmentCompare(const void * a, const void * b) |
|
|
|
return _a < _b ? -1 : _a > _b ? 1 : 0; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* find element in tree |
|
|
|
*/ |
|
|
|
static |
|
|
|
struct memSegment * |
|
|
|
findElement(struct memSegment * tree, size_t size) |
|
|
|
{ |
|
|
|
int found; |
|
|
|
|
|
|
|
TR_TREE_FIND(tree, &size, found, _memSegmentFindCompare); |
|
|
|
|
|
|
|
return found == 0 ? tree : NULL; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* insert element in tree |
|
|
|
*/ |
|
|
|
@ -250,7 +236,7 @@ insertElement(struct memSegment ** tree, struct memSegment * element) |
|
|
|
|
|
|
|
static |
|
|
|
struct memSegment * |
|
|
|
deleteElement(struct memSegment ** tree, struct memSegment * element) |
|
|
|
deleteElement(struct memSegment ** tree, size_t size) |
|
|
|
{ |
|
|
|
struct memSegment * node = *tree; |
|
|
|
struct memSegment * del_node; |
|
|
|
@ -259,7 +245,7 @@ deleteElement(struct memSegment ** tree, struct memSegment * element) |
|
|
|
int found; |
|
|
|
|
|
|
|
// find the relevant node and it's parent |
|
|
|
TR_TREE_FIND(node, element, found, _memSegmentCompare); |
|
|
|
TR_TREE_FIND(node, &size, found, _memSegmentFindCompare); |
|
|
|
|
|
|
|
//while (node) { |
|
|
|
if (found != 0) { |
|
|
|
@ -530,7 +516,6 @@ post(struct memSegment * tree, void (*cb)(struct memSegment *, int)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static |
|
|
|
struct memSegment * segments = NULL; |
|
|
|
|
|
|
|
static |
|
|
|
@ -612,14 +597,11 @@ TR_malloc(size_t size) |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef MEM_OPT |
|
|
|
seg = findElement(segments, size); |
|
|
|
seg = deleteElement(&segments, size); |
|
|
|
#endif |
|
|
|
|
|
|
|
if (NULL == seg) { |
|
|
|
seg = newElement(size); |
|
|
|
} else { |
|
|
|
// remove the found one from the tree as we use it now. |
|
|
|
seg = deleteElement(&segments, seg); |
|
|
|
} |
|
|
|
|
|
|
|
return seg->ptr; |
|
|
|
|