Eliminate several needless checks and fix a few memory leaks
authorTilghman Lesher <tilghman@meg.abyt.es>
Thu, 28 May 2009 15:35:23 +0000 (15:35 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Thu, 28 May 2009 15:35:23 +0000 (15:35 +0000)
(closes issue #14833)
 Reported by: contactmayankjain
 Patches:
       all_changes.patch uploaded by contactmayankjain (license 740)
       slightly modified by me

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@197616 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_rpt.c
channels/chan_console.c
channels/chan_dahdi.c
main/astobj2.c
main/cli.c

index a261fc1..1441414 100644 (file)
@@ -1957,7 +1957,11 @@ unsigned int seq;
        if (!myrpt->p.statpost_url) return;
        str = ast_malloc(strlen(pairs) + strlen(myrpt->p.statpost_url) + 200);
        astr = ast_strdup(myrpt->p.statpost_program);
-       if ((!str) || (!astr)) return;
+       if ((!str) || (!astr)) {
+               ast_free(str);
+               ast_free(astr);
+               return;
+       }
        n = finddelim(astr,astrs,100);
        if (n < 1) return;
        ast_mutex_lock(&myrpt->statpost_lock);
@@ -2895,12 +2899,8 @@ static int rpt_do_stats(int fd, int argc, char *argv[])
                        for(j = 0; j < numoflinks; j++){ /* ast_free() all link names */
                                ast_free(listoflinks[j]);
                        }
-                       if(called_number){
-                               ast_free(called_number);
-                       }
-                       if(lastdtmfcommand){
-                               ast_free(lastdtmfcommand);
-                       }
+                       ast_free(called_number);
+                       ast_free(lastdtmfcommand);
                        return RESULT_SUCCESS;
                }
        }
@@ -3646,8 +3646,7 @@ static int send_tone_telemetry(struct ast_channel *chan, char *tonestring)
                if(res)
                        break;
        }
-       if(p)
-               ast_free(p);
+       ast_free(p);
        if(!res)
                res = play_tone_pair(chan, 0, 0, 100, 0); /* This is needed to ensure the last tone segment is timed correctly */
        
@@ -3828,8 +3827,7 @@ static int telem_lookup(struct rpt *myrpt,struct ast_channel *chan, char *node,
        else{
                res = -1;
        }
-       if(telemetry_save)
-               ast_free(telemetry_save);
+       ast_free(telemetry_save);
        return res;
 }
 
@@ -3907,8 +3905,7 @@ static int get_wait_interval(struct rpt *myrpt, int type)
                        interval = 0;
                        break;
         }
-       if(wait_times_save)
-                       ast_free(wait_times_save);
+       ast_free(wait_times_save);
        return interval;
 }                                                                                                                  
 
index 5bdfa99..091fcf1 100644 (file)
@@ -838,8 +838,7 @@ static char *cli_console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_a
        } else
                ast_cli(a->fd, "No such extension '%s' in context '%s'\n", mye, myc);
 
-       if (s)
-               free(s);
+       free(s);
 
        unref_pvt(pvt);
 
index b3fcac2..fb25595 100644 (file)
@@ -10183,8 +10183,6 @@ static struct dahdi_pvt *mkintf(int channel, const struct dahdi_chan_conf *conf,
 
        if (!here && reloading != 1) {
                if (!(tmp = ast_calloc(1, sizeof(*tmp)))) {
-                       if (tmp)
-                               free(tmp);
                        return NULL;
                }
                ast_mutex_init(&tmp->lock);
index 13e0c54..91ec142 100644 (file)
@@ -342,11 +342,11 @@ void *__ao2_alloc_debug(size_t data_size, ao2_destructor_fn destructor_fn, char
        void *obj;
        FILE *refo = ref_debug ? fopen(REF_FILE,"a") : NULL;
 
-       obj = internal_ao2_alloc(data_size, destructor_fn, file, line, funcname);
-
-       if (obj == NULL)
+       if ((obj = internal_ao2_alloc(data_size, destructor_fn, file, line, funcname)) == NULL) {
+               fclose(refo);
                return NULL;
-       
+       }
+
        if (refo) {
                fprintf(refo, "%p =1   %s:%d:%s (%s)\n", obj, file, line, funcname, tag);
                fclose(refo);
index 136d56a..1bfe263 100644 (file)
@@ -235,8 +235,7 @@ static char *complete_fn(const char *word, int state)
                c += (strlen(ast_config_AST_MODULE_DIR) + 1);
        if (c)
                c = ast_strdup(c);
-       if (d)
-               free(d);
+       free(d);
        
        return c;
 }