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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@201680 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
David Vossel
2009-06-18 16:51:54 +00:00
parent c6c5ca6454
commit 09b65fe917
15 changed files with 43 additions and 62 deletions

View File

@@ -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 */

View File

@@ -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 ;
}

View File

@@ -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;