]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix compilation warnings with GCC 6.1
authorEric Bollengier <eric@baculasystems.com>
Thu, 14 Jul 2016 15:43:43 +0000 (17:43 +0200)
committerKern Sibbald <kern@sibbald.com>
Fri, 15 Jul 2016 09:41:12 +0000 (11:41 +0200)
The new GCC 6.1 considers that "this" is always different from NULL,
the compiler produces a warning, and the code is optimized in this
sens.

 this ? "something" : "somethingelse";

will always return "something", even if this is NULL.

This C++ trick was used with the alist

alist->size()    => if null, it returns 0
alist->empty()   => if null, it returns true

bacula/src/dird/fd_cmds.c
bacula/src/dird/ua_cmds.c
bacula/src/dird/ua_dotcmds.c
bacula/src/dird/ua_status.c
bacula/src/filed/status.c
bacula/src/lib/alist.h
bacula/src/lib/breg.c
bacula/src/lib/bsock.c
bacula/src/stored/autochanger.c
bacula/src/stored/status.c
bacula/src/tools/bsmtp.c

index c1ebd57c0fc4946276b20cd2d4691c1f852519f6..efb5596dc6d892dd69ec7260818f45a4c39ce559 100644 (file)
@@ -672,7 +672,9 @@ int send_runscripts_commands(JCR *jcr)
    int result;
 
    Dmsg0(120, "bdird: sending runscripts to fd\n");
-
+   if (!jcr->job->RunScripts) {
+      goto norunscript;
+   }
    foreach_alist(cmd, jcr->job->RunScripts) {
       if (cmd->can_run_at_level(jcr->getJobLevel()) && cmd->target) {
          ehost = edit_job_codes(jcr, ehost, cmd->target, "");
@@ -719,6 +721,7 @@ int send_runscripts_commands(JCR *jcr)
         goto bail_out;
       }
    }
+norunscript:
    free_pool_memory(msg);
    free_pool_memory(ehost);
    return 1;
index 5ba1a68cf2ac413fec8625b723f9a9aee79ea889..334066e829d0cf50d022262d0f9191312b37543a 100644 (file)
@@ -228,8 +228,10 @@ bool do_a_command(UAContext *ua)
       return false;
    }
 
-   while (ua->jcr->wstorage->size()) {
-      ua->jcr->wstorage->remove(0);
+   if (ua->jcr->wstorage) {
+      while (ua->jcr->wstorage->size()) {
+         ua->jcr->wstorage->remove(0);
+      }
    }
 
    len = strlen(ua->argk[0]);
index eda973a7f3e5a71ea857ae02f9eb4450e21f6fd6..5fbe13f945596f554e356423aae6dfaf72f8e2f2 100644 (file)
@@ -1621,7 +1621,7 @@ static bool defaultscmd(UAContext *ua, const char *cmd)
          ua->send_msg("sdport=%d", storage->SDport);
          device = (DEVICE *)storage->device->first();
          ua->send_msg("device=%s", device->name());
-         if (storage->device->size() > 1) {
+         if (storage->device && storage->device->size() > 1) {
             while ((device = (DEVICE *)storage->device->next())) {
                ua->send_msg(",%s", device->name());
             }
index 395966041dff58ea217d8de708faf47a51ea96a7..ccf0b8492380f2eb023b34de7360b4014bbd3c21 100644 (file)
@@ -309,7 +309,7 @@ void list_dir_status_header(UAContext *ua)
       edit_uint64_with_commas(sm_max_buffers, b5));
 
    /* TODO: use this function once for all daemons */
-   if (b_plugin_list->size() > 0) {
+   if (b_plugin_list && b_plugin_list->size() > 0) {
       int len;
       Plugin *plugin;
       POOL_MEM msg(PM_FNAME);
index 7980117337a9dc4ba7b0ae28cdab113900435b9a..b753b58d6aed81345ae00bda9124ffb5b7d4d1f7 100644 (file)
@@ -90,7 +90,7 @@ static void  list_status_header(STATUS_PKT *sp)
               edit_uint64(debug_level, b2), get_trace(), (int)DEVELOPER_MODE,
               edit_uint64_with_commas(me->max_bandwidth_per_job/1024, b1));
    sendit(msg.c_str(), len, sp);
-   if (b_plugin_list->size() > 0) {
+   if (b_plugin_list && b_plugin_list->size() > 0) {
       Plugin *plugin;
       int len;
       pm_strcpy(msg, " Plugin: ");
index c9b041a026eb537327854d864f52baa1859984b3..4d83c49d315771d4c0c4b1b0a2006743d6db45c1 100644 (file)
@@ -103,8 +103,7 @@ inline void * alist::operator [](int index) const {
 
 inline bool alist::empty() const
 {
-   /* Check for null pointer */
-   return this ? num_items == 0 : true;
+   return num_items == 0;
 }
 
 /*
@@ -143,7 +142,7 @@ inline int alist::size() const
     *  on size to succeed even if nothing put in
     *  alist.
     */
-   return this ? num_items : 0;
+   return num_items;
 }
 
 /* How much to grow by each time */
index 8034c2c321aeedbf6120f0667220dbfeeb565fd8..2e1a532e820429c6764c0dc2ff036108e1df3128 100644 (file)
@@ -69,9 +69,11 @@ void free_bregexp(BREGEXP *self)
  */
 void free_bregexps(alist *bregexps)
 {
-   Dmsg0(500, "bregexp: freeing all BREGEXP object\n");
-
    BREGEXP *elt;
+   Dmsg0(500, "bregexp: freeing all BREGEXP object\n");
+   if (!bregexps) {
+      return;
+   }
    foreach_alist(elt, bregexps) {
       free_bregexp(elt);
    }
index 5cb5d63da4de0a7fa03bb514ce964d3111ed15ad..1a694cc231ce827e6e4d7df89dc0ccfeb5a6ecad 100644 (file)
@@ -916,9 +916,6 @@ int BSOCK::wait_data_intr(int sec, int usec)
    fd_set fdset;
    struct timeval tv;
 
-   if (this == NULL) {
-      return -1;
-   }
    FD_ZERO(&fdset);
    FD_SET((unsigned)m_fd, &fdset);
    tv.tv_sec = sec;
index 8c86d094efe6efe1edc9b3af9a1069c4f9ff1845..e3d8180683bbbcfcb40d51f3a6245feaa12be683 100644 (file)
@@ -436,7 +436,7 @@ static bool unload_other_drive(DCR *dcr, int slot)
    int loaded;
    int i;
 
-   if (!changer) {
+   if (!changer || !changer->device) {
       return false;
    }
    if (changer->device->size() == 1) {
@@ -625,7 +625,7 @@ bool autochanger_cmd(DCR *dcr, BSOCK *dir, const char *cmd)
    if (strcasecmp(cmd, "drives") == 0) {
       AUTOCHANGER *changer_res = dcr->device->changer_res;
       int drives = 1;
-      if (changer_res) {
+      if (changer_res && changer_res->device) {
          drives = changer_res->device->size();
       }
       dir->fsend("drives=%d\n", drives);
index 9a7c173f4be9c739868c166dad2f4565029040c9..cac05c807744fb50c18806a7194d82f7ea053588 100644 (file)
@@ -753,7 +753,7 @@ bool qstatus_cmd(JCR *jcr)
 static void list_plugins(STATUS_PKT *sp)
 {
    POOL_MEM msg(PM_MESSAGE);
-   if (b_plugin_list->size() > 0) {
+   if (b_plugin_list && b_plugin_list->size() > 0) {
       Plugin *plugin;
       int len;
       pm_strcpy(msg, " Plugin: ");
index 55148d405e357c8cfdffd5951c6a391ada2c39c6..997708d73d5bcfd7838be927729ec8734f8172e2 100644 (file)
@@ -231,7 +231,7 @@ static void get_date_string(char *buf, int buf_len)
 
    my_timezone = tz_offset(now, tm);
    strftime(buf, buf_len, "%a, %d %b %Y %H:%M:%S", &tm);
-   snprintf(tzbuf, sizeof(tzbuf), " %+2.2ld%2.2u", -my_timezone / 60, abs(my_timezone) % 60);
+   snprintf(tzbuf, sizeof(tzbuf), " %+2.2ld%2.2u", -my_timezone / 60, (unsigned int)abs(my_timezone) % 60);
    strcat(buf, tzbuf);              /* add +0100 */
    strftime(tzbuf, sizeof(tzbuf), " (%Z)", &tm);
    strcat(buf, tzbuf);              /* add (CEST) */