/*
* Generic reusable binary-heap maintenance code.
+ *
+ * This file is copyright 2005 Simon Tatham.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL SIMON TATHAM BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
*/
#include <stdlib.h>
* Allocate one extra element of space, to use for swapping
* things.
*/
- bh->elts = malloc(maxelts * (eltsize+1));
+ bh->elts = malloc((maxelts + 1) * eltsize);
if (!bh->elts)
return NULL;
{
coverage = checked_coverage = 0;
+ /* Regression test - this used to report access violations when run under
+ * valgrind. */
+ bh = bheap_new(2, sizeof(int), +1, intcmp, &intcmp_ctx);
+ add(2);
+ add(1);
+ rem(1);
+ rem(2);
+ bheap_free(bh);
+
bh = bheap_new(MAX, sizeof(int), +1, intcmp, &intcmp_ctx);
/*