--- CyberLink-old/include/cybergarage/xml/Node.h 2005-06-03 21:19:39.000000000 +0800 +++ CyberLink/include/cybergarage/xml/Node.h 2005-06-14 08:29:33.091906344 +0800 @@ -105,7 +105,7 @@ public: } //////////////////////////////////////////////// - // value + // value (set) //////////////////////////////////////////////// void setValue(const char *val) @@ -121,6 +121,20 @@ public: } //////////////////////////////////////////////// + // value (add) + //////////////////////////////////////////////// + + void addValue(const char *val) + { + value.append(val); + } + + void addValue(const char *val, int len) + { + value.append(val, 0, len); + } + + //////////////////////////////////////////////// // Attribute (Basic) //////////////////////////////////////////////// @@ -318,3 +332,4 @@ public: } #endif + --- CyberLink-old/src/cybergarage/xml/expat/ExpatParser.cpp 2005-06-03 21:19:44.000000000 +0800 +++ CyberLink/src/cybergarage/xml/expat/ExpatParser.cpp 2005-06-14 08:29:43.808277208 +0800 @@ -10,6 +10,8 @@ * * 11/29/04 * - first revision +* 06/14/05 +* - Changed ExpatCharacterData() to use Node::addValue() instead of Node::setValue(). * ******************************************************************/ @@ -101,14 +103,8 @@ static void XMLCALL ExpatCharacterData(v { ExpatData *expatData = (ExpatData *)userData; - char *buf = new char[len+1]; - strncpy(buf, s, len); - buf[len] = '\0'; - if (expatData->currNode != NULL) - expatData->currNode->setValue(buf); - - delete []buf; + expatData->currNode->addValue(s, len); } //////////////////////////////////////////////////////////////////////////////////////////////// @@ -148,3 +144,4 @@ Node *Parser::parse(const char *data, in //////////////////////////////////////////////// #endif +