]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix optimization error with GCC 6.1
authorEric Bollengier <eric@baculasystems.com>
Thu, 14 Jul 2016 18:37:31 +0000 (20:37 +0200)
committerKern Sibbald <kern@sibbald.com>
Fri, 15 Jul 2016 09:41:44 +0000 (11:41 +0200)
With new gcc/g++ version, the memset() call in SMARTALLOC::new()
is stripped out automatically with the -O2 flag.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71885

The patch modifies slightly the code to avoid this optimization.

bacula/src/lib/smartall.h

index 61ec9a95db823239c3107afe9e8ccfeac01b2311..4c6921174c9f070db0b5fdd26d20db5f611ab778 100644 (file)
@@ -109,15 +109,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);
-   memset(p, 0, size);
-   return p;
+   return memset(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);
-   memset(p, 0, size);
-   return p;
+   return memset(p, 0, size);  /* return memset() result to avoid GCC 6.1 issue */
 }
 
 void  operator delete(void *ptr)