diff --git a/bin/tests/task_test.c b/bin/tests/task_test.c index 3cfcc813f0..b2a5a34e8a 100644 --- a/bin/tests/task_test.c +++ b/bin/tests/task_test.c @@ -140,6 +140,9 @@ main(int argc, char *argv[]) { task_detach(&t4); printf("destroy\n"); + timer_detach(&ti1); + timer_detach(&ti2); + timer_manager_destroy(&timgr); task_manager_destroy(&manager); printf("destroyed\n"); diff --git a/lib/isc/heap.c b/lib/isc/heap.c index 782f45e74d..5f2a7f173c 100644 --- a/lib/isc/heap.c +++ b/lib/isc/heap.c @@ -70,6 +70,7 @@ heap_create(mem_context_t mctx, heap_higher_priority_func higher_priority, if (heap == NULL) return (ISC_R_NOMEMORY); heap->magic = HEAP_MAGIC; + heap->mctx = mctx; heap->size = 0; if (size_increment == 0) heap->size_increment = SIZE_INCREMENT; @@ -113,9 +114,11 @@ resize(heap_t heap) { new_array = mem_get(heap->mctx, new_size * sizeof (void *)); if (new_array == NULL) return (FALSE); - memcpy(new_array, heap->array, heap->size); - mem_put(heap->mctx, heap->array, - heap->size * sizeof (void *)); + if (heap->array != NULL) { + memcpy(new_array, heap->array, heap->size); + mem_put(heap->mctx, heap->array, + heap->size * sizeof (void *)); + } heap->size = new_size; heap->array = new_array;