+ /* Validate usage */
+ VALGRIND_MAKE_MEM_DEFINED(ident, IDENT_SIZE);
+ if (!strcmp(ident, IDENT_VEC)) {
+ vector_t *vec = (vector_t*)((char *)ptr - IDENT_VEC_TOP);
+ stat_mem_block_t *block = (stat_mem_block_t*)((char *)vec - IDENT_MEM_TOP);
+
+ VALGRIND_MAKE_MEM_DEFINED(block, sizeof(stat_mem_block_t));
+ con_err("internal warning: invalid use of mem_d:\n");
+ con_err("internal warning: vector (used elements: %u, allocated elements: %u)\n",
+ (unsigned)vec->used,
+ (unsigned)vec->allocated
+ );
+ con_err("internal warning: vector was last (re)allocated with (size: %u (bytes), at location: %s:%u)\n",
+ (unsigned)block->size,
+ block->file,
+ (unsigned)block->line
+ );
+ con_err("internal warning: released with wrong routine at %s:%u\n", file, (unsigned)line);
+ con_err("internal warning: forwarding to vec_free, please fix it\n");
+ VALGRIND_MAKE_MEM_NOACCESS(block, sizeof(stat_mem_block_t));
+ VALGRIND_MAKE_MEM_NOACCESS(ident, IDENT_SIZE);
+ vec_free(ptr);
+ return;
+ }
+ VALGRIND_MAKE_MEM_NOACCESS(ident, IDENT_SIZE);
+ info = (stat_mem_block_t*)((char *)ptr - IDENT_MEM_TOP);