From 0ad7e9d82d45443027162762ec092fc5f595e4fe Mon Sep 17 00:00:00 2001
From: Kostyantyn Vorobyov <kostyantyn.vorobyov@cea.fr>
Date: Tue, 26 Jan 2016 16:33:06 +0100
Subject: [PATCH] Restore __e_acsl_mmodel_memset because of libc memset breakes
 bts #1838.

---
 .../e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.c  | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.c b/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.c
index 04b5dd1c1a2..0211b04a651 100644
--- a/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.c
+++ b/src/plugins/e-acsl/share/e-acsl/memory_model/e_acsl_mmodel.c
@@ -56,6 +56,13 @@ static void warning(const char* message) {
   }
 // }}}
 
+void* __e_acsl_mmodel_memset(void* dest, int val, size_t len) {
+  unsigned char *ptr = (unsigned char*)dest;
+  while (len-- > 0)
+    *ptr++ = val;
+  return dest;
+}
+
 size_t __memory_size = 0;
 /*unsigned cpt_store_block = 0;*/
 
@@ -184,7 +191,7 @@ void* __realloc(void* ptr, size_t size) {
     else {
       int nb = needed_bytes(size);
       tmp->init_ptr = malloc(nb);
-      memset(tmp->init_ptr, 0xFF, nb);
+      __e_acsl_mmodel_memset(tmp->init_ptr, 0xFF, nb);
       if(size%8 != 0)
 	tmp->init_ptr[size/8] <<= (8 - size%8);
     }
@@ -246,7 +253,7 @@ void __initialize (void * ptr, size_t size) {
   if(tmp->init_cpt == 0) {
     int nb = needed_bytes(tmp->size);
     tmp->init_ptr = malloc(nb);
-    memset(tmp->init_ptr, 0, nb);
+    __e_acsl_mmodel_memset(tmp->init_ptr, 0, nb);
   }
 
   for(i = 0; i < size; i++) {
-- 
GitLab