]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
handle some error cases.
authorMichael Jerris <mike@jerris.com>
Tue, 18 Dec 2007 21:59:48 +0000 (21:59 +0000)
committerMichael Jerris <mike@jerris.com>
Tue, 18 Dec 2007 21:59:48 +0000 (21:59 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6881 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_xml.cpp

index e786a1e629c06ee3973169d3f6e71dcb3d0246ca..acc4795c657e792a77fe1c258be2e30732811db2 100644 (file)
@@ -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()