From 62ce8538974f727778f1024d0ef9549e438704fe Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 11 Feb 2010 15:54:41 +0000 Subject: [PATCH] add moc's xml patch git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16604 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_xml.h | 2 ++ src/switch_xml.c | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/src/include/switch_xml.h b/src/include/switch_xml.h index 3995532af3..e430952d4e 100644 --- a/src/include/switch_xml.h +++ b/src/include/switch_xml.h @@ -96,6 +96,8 @@ struct switch_xml { switch_xml_t parent; /*! flags */ uint32_t flags; + /*! is_switch_xml_root bool */ + switch_bool_t is_switch_xml_root_t; }; /*! diff --git a/src/switch_xml.c b/src/switch_xml.c index 6bff959821..818c75a6a7 100644 --- a/src/switch_xml.c +++ b/src/switch_xml.c @@ -397,6 +397,12 @@ SWITCH_DECLARE(const char *) switch_xml_attr(switch_xml_t xml, const char *attr) while (root->xml.parent) root = (switch_xml_root_t) root->xml.parent; /* root tag */ + + /* Make sure root is really a switch_xml_root_t (Issues with switch_xml_toxml) */ + if (!root->xml.is_switch_xml_root_t) { + return NULL; + } + for (i = 0; root->attr[i] && xml->name && strcmp(xml->name, root->attr[i][0]); i++); if (!root->attr[i]) return NULL; /* no matching default attributes */ @@ -2343,6 +2349,7 @@ SWITCH_DECLARE(switch_xml_t) switch_xml_new(const char *name) strcpy(root->err, root->xml.txt = (char *) ""); root->ent = (char **) memcpy(malloc(sizeof(ent)), ent, sizeof(ent)); root->attr = root->pi = (char ***) (root->xml.attr = SWITCH_XML_NIL); + root->xml.is_switch_xml_root_t = SWITCH_TRUE; return &root->xml; }