aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-18 16:58:03 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-18 16:58:03 +0000
commit0740578e6df8e4cb4cb49a2550f5946ceaf0e509 (patch)
tree2bbf3d469c8e0fd61393b6e8d9c2abcfac0107ce
parentc6e74d7f36371d508de5ec7ebcd838913c75ce1c (diff)
Merged revisions 201678 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r201678 | dvossel | 2009-06-18 11:37:42 -0500 (Thu, 18 Jun 2009) | 11 lines fixes some memory leaks and redundant conditions (closes issue #15269) Reported by: contactmayankjain Patches: patch.txt uploaded by contactmayankjain (license 740) memory_leak_stuff.trunk.diff uploaded by dvossel (license 671) Tested by: contactmayankjain, dvossel ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@201682 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/h323/ast_h323.cxx17
-rw-r--r--channels/misdn/isdn_lib.c4
-rw-r--r--codecs/gsm/src/gsm_destroy.c2
-rw-r--r--main/ast_expr2.c1
-rw-r--r--main/ast_expr2f.c5
-rw-r--r--main/asterisk.c3
-rw-r--r--pbx/pbx_config.c9
-rw-r--r--res/ael/ael_lex.c6
-rw-r--r--res/res_config_ldap.c20
-rw-r--r--utils/ael_main.c3
-rw-r--r--utils/conf2ael.c3
-rw-r--r--utils/extconf.c3
-rw-r--r--utils/stereorize.c3
13 files changed, 35 insertions, 44 deletions
diff --git a/channels/h323/ast_h323.cxx b/channels/h323/ast_h323.cxx
index d3144c66d..897f127ad 100644
--- a/channels/h323/ast_h323.cxx
+++ b/channels/h323/ast_h323.cxx
@@ -571,8 +571,7 @@ MyH323Connection::MyH323Connection(MyH323EndPoint & ep, unsigned callReference,
{
#ifdef H323_H450
/* Dispatcher will free out all registered handlers */
- if (h450dispatcher)
- delete h450dispatcher;
+ delete h450dispatcher;
h450dispatcher = new H450xDispatcher(*this);
h4502handler = new H4502Handler(*this, *h450dispatcher);
h4504handler = new MyH4504Handler(*this, *h450dispatcher);
@@ -1987,8 +1986,9 @@ void MyH323Connection::SetCapabilities(int caps, int dtmf_mode, void *_prefs, in
if (cap && cap->IsUsable(*this)) {
lastcap++;
lastcap = localCapabilities.SetCapability(0, lastcap, cap);
- } else if (cap)
+ } else {
delete cap; /* Capability is not usable */
+ }
dtmfMode = dtmf_mode;
if (h323debug) {
@@ -2000,8 +2000,9 @@ void MyH323Connection::SetCapabilities(int caps, int dtmf_mode, void *_prefs, in
cap = new H323_UserInputCapability(H323_UserInputCapability::BasicString);
if (cap && cap->IsUsable(*this)) {
lastcap = localCapabilities.SetCapability(0, lastcap, cap);
- } else if (cap)
+ } else {
delete cap; /* Capability is not usable */
+ }
sendUserInputMode = SendUserInputAsString;
} else {
if ((dtmfMode & H323_DTMF_RFC2833) != 0) {
@@ -2010,8 +2011,7 @@ void MyH323Connection::SetCapabilities(int caps, int dtmf_mode, void *_prefs, in
lastcap = localCapabilities.SetCapability(0, lastcap, cap);
else {
dtmfMode |= H323_DTMF_SIGNAL;
- if (cap)
- delete cap; /* Capability is not usable */
+ delete cap; /* Capability is not usable */
}
}
if ((dtmfMode & H323_DTMF_CISCO) != 0) {
@@ -2023,8 +2023,7 @@ void MyH323Connection::SetCapabilities(int caps, int dtmf_mode, void *_prefs, in
dtmfMode |= H323_DTMF_SIGNAL;
} else {
dtmfMode |= H323_DTMF_SIGNAL;
- if (cap)
- delete cap; /* Capability is not usable */
+ delete cap; /* Capability is not usable */
}
}
if ((dtmfMode & H323_DTMF_SIGNAL) != 0) {
@@ -2032,7 +2031,7 @@ void MyH323Connection::SetCapabilities(int caps, int dtmf_mode, void *_prefs, in
cap = new H323_UserInputCapability(H323_UserInputCapability::SignalToneH245);
if (cap && cap->IsUsable(*this))
lastcap = localCapabilities.SetCapability(0, lastcap, cap);
- else if (cap)
+ else
delete cap; /* Capability is not usable */
}
sendUserInputMode = SendUserInputAsTone; /* RFC2833 transmission handled at Asterisk level */
diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c
index 6790f77e5..98e4c76da 100644
--- a/channels/misdn/isdn_lib.c
+++ b/channels/misdn/isdn_lib.c
@@ -2231,6 +2231,10 @@ static void misdn_save_data(int id, char *p1, int l1, char *p2, int l2)
if (!rx || !tx) {
cb_log(0,0,"Couldn't open files: %s\n",strerror(errno));
+ if (rx)
+ fclose(rx);
+ if (tx)
+ fclose(tx);
return ;
}
diff --git a/codecs/gsm/src/gsm_destroy.c b/codecs/gsm/src/gsm_destroy.c
index 4807c0acd..b2748fc97 100644
--- a/codecs/gsm/src/gsm_destroy.c
+++ b/codecs/gsm/src/gsm_destroy.c
@@ -22,5 +22,5 @@
void gsm_destroy P1((S), gsm S)
{
- if (S) free((char *)S);
+ free((char *)S);
}
diff --git a/main/ast_expr2.c b/main/ast_expr2.c
index b7b533e7a..037d19a6f 100644
--- a/main/ast_expr2.c
+++ b/main/ast_expr2.c
@@ -2397,6 +2397,7 @@ static void
free_value (struct val *vp)
{
if (vp==NULL) {
+ free(vp);
return;
}
if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
diff --git a/main/ast_expr2f.c b/main/ast_expr2f.c
index 0bd784b6c..12615ba5e 100644
--- a/main/ast_expr2f.c
+++ b/main/ast_expr2f.c
@@ -2373,7 +2373,7 @@ int ast_yyerror(const char *, YYLTYPE *, struct parse_io *); /* likewise */
void ast_yyfree(void *ptr, yyscan_t yyscanner)
{
- if (ptr) /* the normal generated ast_yyfree func just frees its first arg;
+ /* the normal generated ast_yyfree func just frees its first arg;
this get complaints on some systems, as sometimes this
arg is a nil ptr! It's usually not fatal, but is irritating! */
free( (char *) ptr );
@@ -2417,8 +2417,7 @@ int ast_expr(char *expr, char *buf, int length, struct ast_channel *chan)
else
buf[0] = 0;
return_value = strlen(buf);
- if (io.val->u.s)
- free(io.val->u.s);
+ free(io.val->u.s);
}
free(io.val);
}
diff --git a/main/asterisk.c b/main/asterisk.c
index b86587d33..95190e2cf 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -799,8 +799,7 @@ void ast_unregister_atexit(void (*func)(void))
AST_RWLIST_TRAVERSE_SAFE_END;
AST_RWLIST_UNLOCK(&atexits);
- if (ae)
- free(ae);
+ free(ae);
}
/* Sending commands from consoles back to the daemon requires a terminating NULL */
diff --git a/pbx/pbx_config.c b/pbx/pbx_config.c
index 8e27ec8a5..23dc96e70 100644
--- a/pbx/pbx_config.c
+++ b/pbx/pbx_config.c
@@ -450,8 +450,7 @@ static char *complete_dialplan_remove_extension(struct ast_cli_args *a)
ast_unlock_contexts();
error2:
- if (exten)
- free(exten);
+ free(exten);
} else if (a->pos == 4) { /* 'dialplan remove extension EXT _X_' (priority) */
char *exten = NULL, *context, *cid, *p;
struct ast_context *c;
@@ -508,8 +507,7 @@ static char *complete_dialplan_remove_extension(struct ast_cli_args *a)
}
ast_unlock_contexts();
error3:
- if (exten)
- free(exten);
+ free(exten);
}
return ret;
}
@@ -1134,8 +1132,7 @@ static char *complete_dialplan_add_ignorepat(struct ast_cli_args *a)
ret = strdup(ast_get_context_name(c));
}
- if (ignorepat)
- free(ignorepat);
+ free(ignorepat);
ast_unlock_contexts();
return ret;
}
diff --git a/res/ael/ael_lex.c b/res/ael/ael_lex.c
index 0271a4a53..b3fa11b26 100644
--- a/res/ael/ael_lex.c
+++ b/res/ael/ael_lex.c
@@ -3221,8 +3221,7 @@ static void pbcpush(char x)
void ael_yyfree(void *ptr, yyscan_t yyscanner)
{
- if (ptr)
- free( (char*) ptr );
+ free( (char*) ptr );
}
static int pbcpop(char x)
@@ -3361,8 +3360,7 @@ struct pval *ael2_parse(char *filename, int *errors)
*errors = 1;
return 0;
}
- if (my_file)
- free(my_file);
+ free(my_file);
my_file = strdup(filename);
stat(filename, &stats);
buffer = (char*)malloc(stats.st_size+2);
diff --git a/res/res_config_ldap.c b/res/res_config_ldap.c
index 1e178cdcd..d6f9668fe 100644
--- a/res/res_config_ldap.c
+++ b/res/res_config_ldap.c
@@ -871,12 +871,8 @@ static struct ast_variable **realtime_ldap_base_ap(unsigned int *entries_count_p
}
}
- if (filter)
- ast_free(filter);
-
- if (clean_basedn)
- ast_free(clean_basedn);
-
+ ast_free(filter);
+ ast_free(clean_basedn);
ast_mutex_unlock(&ldap_lock);
return vars;
@@ -1270,10 +1266,8 @@ static int update_ldap(const char *basedn, const char *table_name, const char *a
ldap_err2string(result));
ast_mutex_unlock(&ldap_lock);
- if (filter)
- free(filter);
- if (clean_basedn)
- free(clean_basedn);
+ free(filter);
+ free(clean_basedn);
ldap_msgfree(ldap_result);
ldap_mods_free(ldap_mods, 0);
return -1;
@@ -1296,10 +1290,8 @@ static int update_ldap(const char *basedn, const char *table_name, const char *a
}
ast_mutex_unlock(&ldap_lock);
- if (filter)
- free(filter);
- if (clean_basedn)
- free(clean_basedn);
+ free(filter);
+ free(clean_basedn);
ldap_msgfree(ldap_result);
ldap_mods_free(ldap_mods, 0);
return num_entries;
diff --git a/utils/ael_main.c b/utils/ael_main.c
index baf295ba7..7cfe592c1 100644
--- a/utils/ael_main.c
+++ b/utils/ael_main.c
@@ -299,8 +299,7 @@ int ast_add_extension2(struct ast_context *con,
}
/* since add_extension2 is responsible for the malloc'd data stuff */
- if( data )
- free(data);
+ free(data);
return 0;
}
diff --git a/utils/conf2ael.c b/utils/conf2ael.c
index bba22368d..bab85de4d 100644
--- a/utils/conf2ael.c
+++ b/utils/conf2ael.c
@@ -471,7 +471,7 @@ int main(int argc, char **argv)
if (mon) {
*mon++ = 0;
/* now all 4 fields are set; what do we do? */
- pvalIncludesAddIncludeWithTimeConstraints(incl, all, hr, dow, dom, mon);
+ pvalIncludesAddIncludeWithTimeConstraints(incl, strdup(all), strdup(hr), strdup(dow), strdup(dom), strdup(mon));
/* the original data is always best to keep (no 2-min rounding) */
} else {
ast_log(LOG_ERROR,"No month spec attached to include!\n");
@@ -483,6 +483,7 @@ int main(int argc, char **argv)
ast_log(LOG_ERROR,"No day of week spec attached to include!\n");
}
}
+ free(all);
}
tmpi = tmpi->next;
}
diff --git a/utils/extconf.c b/utils/extconf.c
index 1327202f6..cb9fa59c5 100644
--- a/utils/extconf.c
+++ b/utils/extconf.c
@@ -2993,8 +2993,7 @@ static struct ast_var_t *ast_var_assign(const char *name, const char *value)
static void ast_var_delete(struct ast_var_t *var)
{
- if (var)
- free(var);
+ free(var);
}
diff --git a/utils/stereorize.c b/utils/stereorize.c
index c8428320d..31f1b1fbe 100644
--- a/utils/stereorize.c
+++ b/utils/stereorize.c
@@ -156,4 +156,7 @@ int main( int argcount, char *args[])
}
}
/* That was an endless loop. This point is never reached. */
+ free(leftsample);
+ free(rightsample);
+ free(stereosample);
}