X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=util.c;h=891082bf598e97ba5f27efa3909a6f385ca4c730;hp=d695ae62f451e2de25f79c029877294cf17c6599;hb=280dfdd3f807532935217722aa9ac74e8194ef5d;hpb=9f2b9e1b46c583d12796df8741bd9b448397b8cb diff --git a/util.c b/util.c index d695ae6..891082b 100644 --- a/util.c +++ b/util.c @@ -166,11 +166,10 @@ static void util_dumpmem(struct memblock_t *memory, uint16_t cols) { } } } - +static uint64_t vectors = 0; void util_meminfo() { struct memblock_t *info; - if (OPTS_OPTION_BOOL(OPTION_DEBUG)) { for (info = mem_start; info; info = info->next) { con_out("lost: %u (bytes) at %s:%u\n", @@ -181,6 +180,10 @@ void util_meminfo() { util_dumpmem(info, OPTS_OPTION_U16(OPTION_MEMDUMPCOLS)); } } + + con_out("Additional Statistics:\n Total vectors used: %lu\n", + vectors + ); if (OPTS_OPTION_BOOL(OPTION_DEBUG) || OPTS_OPTION_BOOL(OPTION_MEMCHK)) { @@ -435,13 +438,20 @@ size_t util_strtononcmd(const char *in, char *out, size_t outsz) { /* TODO: rewrite ... when I redo the ve cleanup */ void _util_vec_grow(void **a, size_t i, size_t s) { vector_t *d = vec_meta(*a); - size_t m = *a ? 2 * d->allocated +i : i+1; - void *p = mem_r((*a ? d : NULL), s * m + sizeof(vector_t)); + size_t m = 0; + void *p = NULL; - if (!*a) + if (*a) { + m = 2 * d->allocated + i; + p = mem_r(d, s * m + sizeof(vector_t)); + } else { + m = i + 1; + p = mem_a(s * m + sizeof(vector_t)); ((vector_t*)p)->used = 0; - *a = (vector_t*)p + 1; + vectors++; + } + *a = (vector_t*)p + 1; vec_meta(*a)->allocated = m; }