From 38dae1369c8ee0c8e51ded207a7d857cfcb3e230 Mon Sep 17 00:00:00 2001 From: Kostyantyn Vorobyov <kostyantyn.vorobyov@cea.fr> Date: Mon, 7 Mar 2016 11:20:45 +0100 Subject: [PATCH] [ADT RTL] Fixed a bug that caused memory blocks allocated via calloc appear as uninitialized data --- .../e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h b/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h index 4ea61f32dd8..1294b4653ba 100644 --- a/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h +++ b/src/plugins/e-acsl/share/e-acsl/adt_models/e_acsl_adt_mmodel.h @@ -195,16 +195,19 @@ void* __realloc(void* ptr, size_t size) { * for further information, see calloc */ void* __calloc(size_t nbr_block, size_t size_block) { void * tmp; + size_t size = nbr_block * size_block; struct _block * new_block; - if(nbr_block * size_block <= 0) + if(size <= 0) return NULL; tmp = native_calloc(nbr_block, size_block); if(tmp == NULL) return NULL; - new_block = __store_block(tmp, nbr_block * size_block); + new_block = __store_block(tmp, size); __heap_size += nbr_block * size_block; DASSERT(new_block != NULL && (void*)new_block->ptr != NULL); + /* Mark allocated block as freeable and initialized */ new_block->freeable = true; + new_block->init_cpt = size; return (void*)new_block->ptr; } -- GitLab