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 4ea61f32dd8f04036b981d494006526aad6245cf..1294b4653ba8c44f6f1059e5659b6c407ceb061a 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;
 }