~mdw
/
sgt
/
library
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix a memory allocation error: allocate (n+1)*size, not n*(size+1).
[sgt/library]
/
bheap.c
diff --git
a/bheap.c
b/bheap.c
index
cf9bb5c
..
fe32b94
100644
(file)
--- a/
bheap.c
+++ b/
bheap.c
@@
-94,7
+94,7
@@
bheap *bheap_new(int maxelts, int eltsize, int direction,
* Allocate one extra element of space, to use for swapping
* things.
*/
* 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;
if (!bh->elts)
return NULL;
@@
-364,6
+364,15
@@
int main(void)
{
coverage = checked_coverage = 0;
{
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);
/*
bh = bheap_new(MAX, sizeof(int), +1, intcmp, &intcmp_ctx);
/*