diff options
author | dougb <dougb@FreeBSD.org> | 2010-03-02 19:49:55 +0000 |
---|---|---|
committer | dougb <dougb@FreeBSD.org> | 2010-03-02 19:49:55 +0000 |
commit | 78d3ed4dabea80d9111600a39b8d15b94f74c1ed (patch) | |
tree | c470abc978aa6ca4f6b0033d7e09c8b7b09cd629 /lib/isc/heap.c | |
parent | 1f8512873050d11ecd5684a4118f041b6158e9b7 (diff) | |
download | FreeBSD-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.c | 14 |
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); } |