You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xerces.apache.org by "Piras Sandro (KSDB 121)" <sa...@credit-suisse.com> on 2008/06/02 09:42:48 UTC

RE: Crash in DOM_Document::createElement() when name an empty string

Hi Dave,
yes, it compiles.. at least the Sun compiler version 5.3 I'm actually
using.

I copied the code from our project in a single sourcefile and without
all the object oriented stuff only to see how it works. Like in the
project, calling DOM_Document::createElement("") generates a core file,
the same when calling DOM_Document::createElement(name) when name
contains an empty string, it doesn't throw an exception.. I tried
filling name with a space -> name = " ", then createElement() throws an
exception.

See the function createNameValue(), the function createNameValue() will
be callend in main() in a try block. 

Regards
Sandro

Code:

#include <iostream>

#include <xercesc/dom/deprecated/DOM.hpp>


using namespace XERCES_CPP_NAMESPACE;


using std::cout;
using std::endl;


DOM_Document myDocument;


DOM_Node makeChild(const char* childName, DOM_Node parentNode, bool
bAllowDuplicate)
//**********************************************************************
************
{
   // Create child node if it does not exist, returns existing one
otherwise

   DOM_Node child = parentNode;
   if (!parentNode.isNull() && (strlen(childName) > 0))
   {
      child = parentNode.getFirstChild();
      while (!child.isNull() &&
!child.getNodeName().equals(DOMString(childName)) &&
             !bAllowDuplicate)
      {
         child = child.getNextSibling();
      } // end while

      if (child.isNull() || bAllowDuplicate)
      {
         child = myDocument.createElement(childName);
         parentNode.appendChild(child);
      } // end if (child.isNull() -> TRUE || (bAllowDuplicate -> TRUE)
   } // end if

   return child;
} // end makeChild()


DOM_Node makePath(const char* path, DOM_Node parentNode)
//******************************************************
{
   char* copyOfPath = new char[strlen(path) + 1];
   copyOfPath[strlen(path)] = '\0';

   strncpy(copyOfPath, path, strlen(path));

   char* pStart = (char*)copyOfPath;
   char* pEnd = pStart;

   bool bContinue = pEnd && *pEnd;
   while (bContinue)
   {
      if ((*pEnd == '/') || (*pEnd == '\0')) // Found the limiter
      {
         if ((*pEnd == '\0')) bContinue = false;
         *pEnd = '\0';

         // Create child node if it does not exist, returns existing one
otherwise
         parentNode = makeChild(pStart, parentNode, false);

         pStart = pEnd + 1;
      } // end if (*pEnd -> '/') OR (*pEnd -> '\0')

      pEnd++;
   } // end while (bContinue -> TRUE)

   return parentNode;
} // end makePath()


DOM_Node makePath(const char* path)
//*********************************
{
   DOM_Node nodeRet;

   if (myDocument.isNull()) myDocument = DOM_Document::createDocument();

   nodeRet = myDocument;

   nodeRet = makePath(path, nodeRet);

   return nodeRet;
} // end makePath()


void createNameValue(const char* name, const char* value, DOM_Node
parent)
//**********************************************************************
**
{
   if (!parent.isNull() && (name != NULL) && (value != NULL))
   {
      cout << "CreateNameValue() : " << "name = \"" << name << "\",
value = \"" << value << "\"" << endl;

      // Crashes when name is an empty string instead to throw an
exception
      //DOM_Element element = myDocument.createElement(name);
      // XXX check whats wrong
      DOM_Element element;
      if (strcmp(name, "") == 0)
      {
         cout << "createNameValue() : call createElement with empty
string" << endl;
         element = myDocument.createElement("");

         //cout << "createNameValue() : call createElement with one
space" << endl;
         //element = myDocument.createElement(" ");

         cout << "createNameValue() : createElement() was successfull"
<< endl;
      }
      else
      {
         cout << "createNameValue() : call createElement with name = \""
<< name << "\"" << endl;
         element = myDocument.createElement(name);
      }
      // XXX

      DOM_Text text = myDocument.createTextNode(value);
      element.appendChild(text);
      parent.appendChild(element);
   } // end if (parent.isNull() -> FALSE) AND (name <> NULL) AND (value
<> NULL)
} // end createNameValue()


int main()
{
   cout << "start" << endl;

   XMLPlatformUtils::Initialize();

   DOM_Node nodeProd = makePath("CMF/Trade/Product");

   const char* name = "";
   const char* value = "";

   cout << "name = \"" << name << "\"" << endl;
   cout << "value = \"" << value << "\"" << endl;

   try
   {
      createNameValue(name, value, makePath("Identifiers", nodeProd));
   }
   catch(...)
   {
     cout << "Exception caught in createNameValue()" << endl;
   }

} // end main()

-----Original Message-----
From: David Bertoni [mailto:dbertoni@apache.org] 
Sent: Donnerstag, 29. Mai 2008 19:22
To: c-users@xerces.apache.org
Subject: Re: Crash in DOM_Document::createElement() when name an empty
string

Piras Sandro (KSDB 121) wrote:
> Hi all
> thx for your help.
> 
> I tested also when filling directly an empty string with
> DOM_Document::createElement("") -> crashes
How does this even compile?  "" is not a pointer to a UTF-16 string. 
Can you please provide a small, isolated program that reproduces the
crash?

Dave


RE: Unresolved Linking Error

Posted by "Sahoglu, Ozgur" <Oz...@intuit.com>.
Hi Dennis,

I am guessing that you're trying to link statically to the xerces-c++. In that case, build your application with the XML_LIBRARRY preprocessor define. Also make sure that the xerces-c++ library is defined in your library path.


Cheers,


-Ozgur Sahoglu

-----Original Message-----
From: Dennis Endt [mailto:dennis.endt@googlemail.com] 
Sent: Saturday, June 07, 2008 2:02 PM
To: c-users@xerces.apache.org
Subject: Re: Unresolved Linking Error

David Bertoni schrieb:
> Dennis Endt wrote:
>> Hi,
>>
>> I`m porting my Code from MFC to Qt and now I`m getting unresolved 
>> Linking Errors:
>>
>> LNK2019
>> LNK2001
>>
>> The Settings are the same as before. The lib is correct included.
>>
>> What`s wrong?
> Without information about the actual linker errors, who knows what's 
> wrong?  Please post the linker output.
>
> Dave
>
The whole linking Errors:

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) protected: __thiscall 
xercesc_2_8::DOMErrorHandler::DOMErrorHandler(void)" 
(__imp_??0DOMErrorHandler@xercesc_2_8@@IAE@XZ)" in Funktion ""public: 
__thiscall XMLBaseErrorHandler::XMLBaseErrorHandler(void)" 
(??0XMLBaseErrorHandler@@QAE@XZ)".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: virtual __thiscall 
xercesc_2_8::DOMErrorHandler::~DOMErrorHandler(void)" 
(__imp_??1DOMErrorHandler@xercesc_2_8@@UAE@XZ)" in Funktion ""public: 
virtual __thiscall XMLBaseErrorHandler::~XMLBaseErrorHandler(void)" 
(??1XMLBaseErrorHandler@@UAE@XZ)".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static void __cdecl 
xercesc_2_8::XMLPlatformUtils::Terminate(void)" 
(__imp_?Terminate@XMLPlatformUtils@xercesc_2_8@@SAXXZ)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static bool __cdecl 
xercesc_2_8::DOMImplementation::loadDOMExceptionMsg(enum 
xercesc_2_8::DOMException::ExceptionCode,unsigned short * const,unsigned 
int)" 
(__imp_?loadDOMExceptionMsg@DOMImplementation@xercesc_2_8@@SA_NW4ExceptionCode@DOMException@2@QAGI@Z)" 
in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgXercesUseCachedGrammarInParse" 
(__imp_?fgXercesUseCachedGrammarInParse@XMLUni@xercesc_2_8@@2QBGB)".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation" 
(__imp_?fgXercesSchemaExternalNoNameSpaceSchemaLocation@XMLUni@xercesc_2_8@@2QBGB)". 


XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgXercesSchemaFullChecking" 
(__imp_?fgXercesSchemaFullChecking@XMLUni@xercesc_2_8@@2QBGB)".

 XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgXercesSchema" 
(__imp_?fgXercesSchema@XMLUni@xercesc_2_8@@2QBGB)".

 XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgDOMValidation" 
(__imp_?fgDOMValidation@XMLUni@xercesc_2_8@@2QBGB)".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgDOMNamespaces" 
(__imp_?fgDOMNamespaces@XMLUni@xercesc_2_8@@2QBGB)".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static class xercesc_2_8::MemoryManager 
* xercesc_2_8::XMLPlatformUtils::fgMemoryManager" 
(__imp_?fgMemoryManager@XMLPlatformUtils@xercesc_2_8@@2PAVMemoryManager@2@A)". 


XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static class 
xercesc_2_8::DOMImplementation * __cdecl 
xercesc_2_8::DOMImplementationRegistry::getDOMImplementation(unsigned 
short const *)" 
(__imp_?getDOMImplementation@DOMImplementationRegistry@xercesc_2_8@@SAPAVDOMImplementation@2@PBG@Z)" 
in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static unsigned short * 
__cdecl xercesc_2_8::XMLString::transcode(char const * const)" 
(__imp_?transcode@XMLString@xercesc_2_8@@SAPAGQBD@Z)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static void __cdecl 
xercesc_2_8::XMLString::release(char * *)" 
(__imp_?release@XMLString@xercesc_2_8@@SAXPAPAD@Z)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static char * __cdecl 
xercesc_2_8::XMLString::transcode(unsigned short const * const)" 
(__imp_?transcode@XMLString@xercesc_2_8@@SAPADQBG@Z)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: unsigned short const * 
__thiscall xercesc_2_8::XMLException::getMessage(void)const " 
(__imp_?getMessage@XMLException@xercesc_2_8@@QBEPBGXZ)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static void __cdecl 
xercesc_2_8::XMLPlatformUtils::Initialize(char const * const,char const 
* const,class xercesc_2_8::PanicHandler * const,class 
xercesc_2_8::MemoryManager * const,bool)" 
(__imp_?Initialize@XMLPlatformUtils@xercesc_2_8@@SAXQBD0QAVPanicHandler@2@QAVMemoryManager@2@_N@Z)" 
in Funktion ""public: bool __thiscall XmlBase2Dialog::Init(char const 
*)" (?Init@XmlBase2Dialog@@QAE_NPBD@Z)".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static char const * const 
xercesc_2_8::XMLUni::fgXercescDefaultLocale" 
(__imp_?fgXercescDefaultLocale@XMLUni@xercesc_2_8@@2QBDB)".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static void __cdecl 
xercesc_2_8::XMLString::release(unsigned short * *)" 
(__imp_?release@XMLString@xercesc_2_8@@SAXPAPAG@Z)" in Funktion 
""public: __thiscall XStr::~XStr(void)" (??1XStr@@QAE@XZ)".

Dennis


Re: Unresolved Linking Error

Posted by Dennis Endt <de...@googlemail.com>.
David Bertoni schrieb:
> Dennis Endt wrote:
>> Hi,
>>
>> I`m porting my Code from MFC to Qt and now I`m getting unresolved 
>> Linking Errors:
>>
>> LNK2019
>> LNK2001
>>
>> The Settings are the same as before. The lib is correct included.
>>
>> What`s wrong?
> Without information about the actual linker errors, who knows what's 
> wrong?  Please post the linker output.
>
> Dave
>
The whole linking Errors:

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) protected: __thiscall 
xercesc_2_8::DOMErrorHandler::DOMErrorHandler(void)" 
(__imp_??0DOMErrorHandler@xercesc_2_8@@IAE@XZ)" in Funktion ""public: 
__thiscall XMLBaseErrorHandler::XMLBaseErrorHandler(void)" 
(??0XMLBaseErrorHandler@@QAE@XZ)".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: virtual __thiscall 
xercesc_2_8::DOMErrorHandler::~DOMErrorHandler(void)" 
(__imp_??1DOMErrorHandler@xercesc_2_8@@UAE@XZ)" in Funktion ""public: 
virtual __thiscall XMLBaseErrorHandler::~XMLBaseErrorHandler(void)" 
(??1XMLBaseErrorHandler@@UAE@XZ)".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static void __cdecl 
xercesc_2_8::XMLPlatformUtils::Terminate(void)" 
(__imp_?Terminate@XMLPlatformUtils@xercesc_2_8@@SAXXZ)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static bool __cdecl 
xercesc_2_8::DOMImplementation::loadDOMExceptionMsg(enum 
xercesc_2_8::DOMException::ExceptionCode,unsigned short * const,unsigned 
int)" 
(__imp_?loadDOMExceptionMsg@DOMImplementation@xercesc_2_8@@SA_NW4ExceptionCode@DOMException@2@QAGI@Z)" 
in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgXercesUseCachedGrammarInParse" 
(__imp_?fgXercesUseCachedGrammarInParse@XMLUni@xercesc_2_8@@2QBGB)".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation" 
(__imp_?fgXercesSchemaExternalNoNameSpaceSchemaLocation@XMLUni@xercesc_2_8@@2QBGB)". 


XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgXercesSchemaFullChecking" 
(__imp_?fgXercesSchemaFullChecking@XMLUni@xercesc_2_8@@2QBGB)".

 XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgXercesSchema" 
(__imp_?fgXercesSchema@XMLUni@xercesc_2_8@@2QBGB)".

 XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgDOMValidation" 
(__imp_?fgDOMValidation@XMLUni@xercesc_2_8@@2QBGB)".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static unsigned short const * const 
xercesc_2_8::XMLUni::fgDOMNamespaces" 
(__imp_?fgDOMNamespaces@XMLUni@xercesc_2_8@@2QBGB)".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static class xercesc_2_8::MemoryManager 
* xercesc_2_8::XMLPlatformUtils::fgMemoryManager" 
(__imp_?fgMemoryManager@XMLPlatformUtils@xercesc_2_8@@2PAVMemoryManager@2@A)". 


XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static class 
xercesc_2_8::DOMImplementation * __cdecl 
xercesc_2_8::DOMImplementationRegistry::getDOMImplementation(unsigned 
short const *)" 
(__imp_?getDOMImplementation@DOMImplementationRegistry@xercesc_2_8@@SAPAVDOMImplementation@2@PBG@Z)" 
in Funktion "__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static unsigned short * 
__cdecl xercesc_2_8::XMLString::transcode(char const * const)" 
(__imp_?transcode@XMLString@xercesc_2_8@@SAPAGQBD@Z)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static void __cdecl 
xercesc_2_8::XMLString::release(char * *)" 
(__imp_?release@XMLString@xercesc_2_8@@SAXPAPAD@Z)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static char * __cdecl 
xercesc_2_8::XMLString::transcode(unsigned short const * const)" 
(__imp_?transcode@XMLString@xercesc_2_8@@SAPADQBG@Z)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: unsigned short const * 
__thiscall xercesc_2_8::XMLException::getMessage(void)const " 
(__imp_?getMessage@XMLException@xercesc_2_8@@QBEPBGXZ)" in Funktion 
"__catch$?Init@XmlBase2Dialog@@QAE_NPBD@Z$0".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static void __cdecl 
xercesc_2_8::XMLPlatformUtils::Initialize(char const * const,char const 
* const,class xercesc_2_8::PanicHandler * const,class 
xercesc_2_8::MemoryManager * const,bool)" 
(__imp_?Initialize@XMLPlatformUtils@xercesc_2_8@@SAXQBD0QAVPanicHandler@2@QAVMemoryManager@2@_N@Z)" 
in Funktion ""public: bool __thiscall XmlBase2Dialog::Init(char const 
*)" (?Init@XmlBase2Dialog@@QAE_NPBD@Z)".

XmlBase2Dialog.obj : error LNK2001: Nicht aufgelöstes externes Symbol 
""__declspec(dllimport) public: static char const * const 
xercesc_2_8::XMLUni::fgXercescDefaultLocale" 
(__imp_?fgXercescDefaultLocale@XMLUni@xercesc_2_8@@2QBDB)".

XmlBase2Dialog.obj : error LNK2019: Verweis auf nicht aufgelöstes 
externes Symbol ""__declspec(dllimport) public: static void __cdecl 
xercesc_2_8::XMLString::release(unsigned short * *)" 
(__imp_?release@XMLString@xercesc_2_8@@SAXPAPAG@Z)" in Funktion 
""public: __thiscall XStr::~XStr(void)" (??1XStr@@QAE@XZ)".

Dennis

Re: Unresolved Linking Error

Posted by David Bertoni <db...@apache.org>.
Dennis Endt wrote:
> Hi,
> 
> I`m porting my Code from MFC to Qt and now I`m getting unresolved 
> Linking Errors:
> 
> LNK2019
> LNK2001
> 
> The Settings are the same as before. The lib is correct included.
> 
> What`s wrong?
Without information about the actual linker errors, who knows what's 
wrong?  Please post the linker output.

Dave

Unresolved Linking Error

Posted by Dennis Endt <de...@googlemail.com>.
Hi,

I`m porting my Code from MFC to Qt and now I`m getting unresolved 
Linking Errors:

LNK2019
LNK2001

The Settings are the same as before. The lib is correct included.

What`s wrong?

Greetings
D.E.

RE: Crash in DOM_Document::createElement() when name an empty string

Posted by "Piras Sandro (KSDB 121)" <sa...@credit-suisse.com>.
Hi Dave,
I created the Jira issue XERCESC-1806, but was not able to assign it to
you.
Regards
Sandro 

-----Original Message-----
From: David Bertoni [mailto:dbertoni@apache.org] 
Sent: Montag, 2. Juni 2008 19:39
To: c-users@xerces.apache.org
Subject: Re: Crash in DOM_Document::createElement() when name an empty
string

Piras Sandro (KSDB 121) wrote:
> Hi Dave,
> yes, it compiles.. at least the Sun compiler version 5.3 I'm actually 
> using.
Uggh.  I just noticed that you're using the deprecated DOM, which gone
in 3.0.  I think you'd be better off by spending your time porting to
the new DOM.

> 
> I copied the code from our project in a single sourcefile and without 
> all the object oriented stuff only to see how it works. Like in the 
> project, calling DOM_Document::createElement("") generates a core 
> file, the same when calling DOM_Document::createElement(name) when 
> name contains an empty string, it doesn't throw an exception.. I tried

> filling name with a space -> name = " ", then createElement() throws 
> an exception.
It's definitely a regression, due to some performance enhancement work
that assumed isValidName() would never be passed a string of length 0. 
Can you please file a Jira issue and assign it to me?

Dave

Re: Crash in DOM_Document::createElement() when name an empty string

Posted by David Bertoni <db...@apache.org>.
Piras Sandro (KSDB 121) wrote:
> Hi Dave,
> yes, it compiles.. at least the Sun compiler version 5.3 I'm actually
> using.
Uggh.  I just noticed that you're using the deprecated DOM, which gone 
in 3.0.  I think you'd be better off by spending your time porting to 
the new DOM.

> 
> I copied the code from our project in a single sourcefile and without
> all the object oriented stuff only to see how it works. Like in the
> project, calling DOM_Document::createElement("") generates a core file,
> the same when calling DOM_Document::createElement(name) when name
> contains an empty string, it doesn't throw an exception.. I tried
> filling name with a space -> name = " ", then createElement() throws an
> exception.
It's definitely a regression, due to some performance enhancement work 
that assumed isValidName() would never be passed a string of length 0. 
Can you please file a Jira issue and assign it to me?

Dave