From 09e842f8310edc7a5ecc6e396200af0e8b222cf7 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 18 Dec 2007 21:59:48 +0000 Subject: [PATCH] handle some error cases. git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6881 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_xml.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/switch_xml.cpp b/src/switch_xml.cpp index e786a1e629..acc4795c65 100644 --- a/src/switch_xml.cpp +++ b/src/switch_xml.cpp @@ -431,9 +431,21 @@ static void switch_xml_char_content(switch_xml_root_t root, char *s, switch_size if (!*(xml->txt)) xml->txt = s; // initial character content else { // allocate our own memory and make a copy - xml->txt = (xml->flags & SWITCH_XML_TXTM) // allocate some space - ? (char *)realloc(xml->txt, (l = strlen(xml->txt)) + len) - : strcpy((char *)malloc((l = strlen(xml->txt)) + len), xml->txt); + if ((xml->flags & SWITCH_XML_TXTM)) { // allocate some space + char *tmp = (char *)realloc(xml->txt, (l = strlen(xml->txt)) + len); + if (tmp) { + xml->txt = tmp; + } else { + return; + } + } else { + char *tmp = (char *)malloc((l = strlen(xml->txt)) + len); + if (tmp) { + xml->txt = strcpy(tmp, xml->txt); + } else { + return; + } + } strcpy(xml->txt + l, s); // add new char content if (s != m) free(s); // free s if it was malloced by switch_xml_decode()