]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix compilation for Debian Stretch with GCC 6.3
authorEric Bollengier <eric@baculasystems.com>
Wed, 5 Jul 2017 10:26:37 +0000 (12:26 +0200)
committerKern Sibbald <kern@sibbald.com>
Wed, 12 Jul 2017 16:51:07 +0000 (18:51 +0200)
bacula/src/lib/smartall.c
bacula/src/lib/smartall.h

index 61282d68a6b4646da9038441d5a0605e697a6dce..49a8c9fe8f032253a488937e210a9fc3afc645f9 100644 (file)
@@ -556,3 +556,10 @@ void operator delete(void *buf)
 #endif
 
 #endif
+
+/* Avoid aggressive optimization */
+void *bmemset(void *s, int c, size_t n)
+{
+   void *ret = memset(s, c, n);
+   return ret;
+}
index 2bde7620e8d80d5240d106f9b83f235d7fe39c9e..49af5816278278660f6cc2906d3eaf876fda3474 100644 (file)
@@ -35,6 +35,9 @@ extern uint32_t DLL_IMP_EXP sm_buffers;
 #define SMARTALLOC SMARTALLOC
 
 
+/* Avoid aggressive GCC optimization */
+extern void *bmemset(void *s, int c, size_t n);
+
 extern void *sm_malloc(const char *fname, int lineno, unsigned int nbytes),
             *sm_calloc(const char *fname, int lineno,
                 unsigned int nelem, unsigned int elsize),
@@ -109,13 +112,13 @@ void *operator new(size_t s, const char *fname, int line)
 {
    size_t size =  s > sizeof(int) ? (unsigned int)s : sizeof(int);
    void *p = sm_malloc(fname, line, size);
-   return memset(p, 0, size);   /* return memset() result to avoid GCC 6.1 issue */
+   return bmemset(p, 0, size);   /* return memset() result to avoid GCC 6.1 issue */
 }
 void *operator new[](size_t s, const char *fname, int line)
 {
    size_t size =  s > sizeof(int) ? (unsigned int)s : sizeof(int);
    void *p = sm_malloc(fname, line, size);
-   return memset(p, 0, size);  /* return memset() result to avoid GCC 6.1 issue */
+   return bmemset(p, 0, size);  /* return memset() result to avoid GCC 6.1 issue */
 }
 
 void  operator delete(void *ptr)
@@ -151,12 +154,12 @@ class SMARTALLOC
    public:
       void *operator new(size_t s) {
          void *p = malloc(s);
-         memset(p, 0, s);
+         bmemset(p, 0, s);
          return p;
       }
       void *operator new[](size_t s) {
          void *p = malloc(s);
-         memset(p, 0, s);
+         bmemset(p, 0, s);
          return p;
       }
       void  operator delete(void *ptr) {