diff options
author | dvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-06-18 16:37:42 +0000 |
---|---|---|
committer | dvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-06-18 16:37:42 +0000 |
commit | 7803be8ee42ad67cee69a9eaffbc2fafe07bf14f (patch) | |
tree | 9e55718a16861e122cd8aed23e4b4f0369fdec92 /channels | |
parent | 160722f2579aec0cf074b8bd1d0e4c6fa21e0294 (diff) |
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/trunk@201678 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/h323/ast_h323.cxx | 17 | ||||
-rw-r--r-- | channels/misdn/isdn_lib.c | 4 | ||||
-rwxr-xr-x | channels/xpmr/xpmr.c | 2 |
3 files changed, 13 insertions, 10 deletions
diff --git a/channels/h323/ast_h323.cxx b/channels/h323/ast_h323.cxx index aeecfdab5..e98592d7d 100644 --- a/channels/h323/ast_h323.cxx +++ b/channels/h323/ast_h323.cxx @@ -572,8 +572,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); @@ -1988,8 +1987,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) { @@ -2001,8 +2001,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) { @@ -2011,8 +2012,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) { @@ -2024,8 +2024,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) { @@ -2033,7 +2032,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 ec8f37f09..47da58378 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -2341,6 +2341,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/channels/xpmr/xpmr.c b/channels/xpmr/xpmr.c index c2742cbc3..7c87410b2 100755 --- a/channels/xpmr/xpmr.c +++ b/channels/xpmr/xpmr.c @@ -157,7 +157,7 @@ i16 string_parse(char *src, char **dest, char ***ptrs) TRACEJ(2,(" source len = %i\n",slen)); pd=*dest; - if(pd) free(pd); + free(pd); pd=calloc(slen+1,1); memcpy(pd,src,slen); *dest=pd; |