summaryrefslogtreecommitdiff
path: root/coverage/ctracer/datastack.c
diff options
context:
space:
mode:
Diffstat (limited to 'coverage/ctracer/datastack.c')
-rw-r--r--coverage/ctracer/datastack.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/coverage/ctracer/datastack.c b/coverage/ctracer/datastack.c
index 5a384e6b..515ba924 100644
--- a/coverage/ctracer/datastack.c
+++ b/coverage/ctracer/datastack.c
@@ -4,7 +4,7 @@
#include "util.h"
#include "datastack.h"
-#define STACK_DELTA 100
+#define STACK_DELTA 20
int
DataStack_init(Stats *pstats, DataStack *pdata_stack)
@@ -18,6 +18,11 @@ DataStack_init(Stats *pstats, DataStack *pdata_stack)
void
DataStack_dealloc(Stats *pstats, DataStack *pdata_stack)
{
+ int i;
+
+ for (i = 0; i < pdata_stack->alloc; i++) {
+ Py_XDECREF(pdata_stack->stack[i].file_data);
+ }
PyMem_Free(pdata_stack->stack);
}
@@ -35,6 +40,9 @@ DataStack_grow(Stats *pstats, DataStack *pdata_stack)
pdata_stack->depth--;
return RET_ERROR;
}
+ /* Zero the new entries. */
+ memset(bigger_data_stack + pdata_stack->alloc, 0, STACK_DELTA * sizeof(DataStackEntry));
+
pdata_stack->stack = bigger_data_stack;
pdata_stack->alloc = bigger;
}