summaryrefslogtreecommitdiffstats
path: root/lib/isc/heap.c
diff options
context:
space:
mode:
authordougb <dougb@FreeBSD.org>2010-03-02 19:49:55 +0000
committerdougb <dougb@FreeBSD.org>2010-03-02 19:49:55 +0000
commit78d3ed4dabea80d9111600a39b8d15b94f74c1ed (patch)
treec470abc978aa6ca4f6b0033d7e09c8b7b09cd629 /lib/isc/heap.c
parent1f8512873050d11ecd5684a4118f041b6158e9b7 (diff)
downloadFreeBSD-src-78d3ed4dabea80d9111600a39b8d15b94f74c1ed.zip
FreeBSD-src-78d3ed4dabea80d9111600a39b8d15b94f74c1ed.tar.gz
Vendor import of BIND 9.6.2
Diffstat (limited to 'lib/isc/heap.c')
-rw-r--r--lib/isc/heap.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/isc/heap.c b/lib/isc/heap.c
index 91d78c0..dc32100 100644
--- a/lib/isc/heap.c
+++ b/lib/isc/heap.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2004-2007 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2007, 2010 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 1997-2001 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: heap.c,v 1.37 2007/10/19 17:15:53 explorer Exp $ */
+/* $Id: heap.c,v 1.37.240.3 2010/02/04 23:47:46 tbox Exp $ */
/*! \file
* Heap implementation of priority queues adapted from the following:
@@ -186,15 +186,17 @@ sink_down(isc_heap_t *heap, unsigned int i, void *elt) {
isc_result_t
isc_heap_insert(isc_heap_t *heap, void *elt) {
- unsigned int i;
+ unsigned int new_last;
REQUIRE(VALID_HEAP(heap));
- i = ++heap->last;
- if (heap->last >= heap->size && !resize(heap))
+ new_last = heap->last + 1;
+ RUNTIME_CHECK(new_last > 0); /* overflow check */
+ if (new_last >= heap->size && !resize(heap))
return (ISC_R_NOMEMORY);
+ heap->last = new_last;
- float_up(heap, i, elt);
+ float_up(heap, new_last, elt);
return (ISC_R_SUCCESS);
}
OpenPOWER on IntegriCloud