| Index: tools/telemetry/third_party/coverage/coverage/ctracer/datastack.c
|
| diff --git a/tools/telemetry/third_party/coverage/coverage/ctracer/datastack.c b/tools/telemetry/third_party/coverage/coverage/ctracer/datastack.c
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1d925ad78d6a029d9cee6ebc278a9e173248eb0b
|
| --- /dev/null
|
| +++ b/tools/telemetry/third_party/coverage/coverage/ctracer/datastack.c
|
| @@ -0,0 +1,42 @@
|
| +/* Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 */
|
| +/* For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt */
|
| +
|
| +#include "util.h"
|
| +#include "datastack.h"
|
| +
|
| +#define STACK_DELTA 100
|
| +
|
| +int
|
| +DataStack_init(Stats *pstats, DataStack *pdata_stack)
|
| +{
|
| + pdata_stack->depth = -1;
|
| + pdata_stack->stack = NULL;
|
| + pdata_stack->alloc = 0;
|
| + return RET_OK;
|
| +}
|
| +
|
| +void
|
| +DataStack_dealloc(Stats *pstats, DataStack *pdata_stack)
|
| +{
|
| + PyMem_Free(pdata_stack->stack);
|
| +}
|
| +
|
| +int
|
| +DataStack_grow(Stats *pstats, DataStack *pdata_stack)
|
| +{
|
| + pdata_stack->depth++;
|
| + if (pdata_stack->depth >= pdata_stack->alloc) {
|
| + STATS( pstats->stack_reallocs++; )
|
| + /* We've outgrown our data_stack array: make it bigger. */
|
| + int bigger = pdata_stack->alloc + STACK_DELTA;
|
| + DataStackEntry * bigger_data_stack = PyMem_Realloc(pdata_stack->stack, bigger * sizeof(DataStackEntry));
|
| + if (bigger_data_stack == NULL) {
|
| + PyErr_NoMemory();
|
| + pdata_stack->depth--;
|
| + return RET_ERROR;
|
| + }
|
| + pdata_stack->stack = bigger_data_stack;
|
| + pdata_stack->alloc = bigger;
|
| + }
|
| + return RET_OK;
|
| +}
|
|
|