Correctly convert a null QString into a null WebCore::String. Add a String(const...
authorlars <lars@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jul 2007 13:57:33 +0000 (13:57 +0000)
committerlars <lars@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Jul 2007 13:57:33 +0000 (13:57 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@24730 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/dom/XMLTokenizer.cpp
WebCore/platform/PlatformString.h
WebCore/platform/qt/StringQt.cpp

index 4e41b5a1e296a83459862990610f68e79cab3357..292ee941b53292e7b4eab1f322b91680015d8ea9 100644 (file)
@@ -1,3 +1,15 @@
+2007-07-27  Lars Knoll  <lars@trolltech.com>
+
+        Reviewed by Zack and Lars.
+
+        Correctly convert a null QString into a null WebCore::String. Add a String(const QStringRef&) constructor so that we can avoid converting QStringRef via QString to WebCore::String.
+
+        * dom/XMLTokenizer.cpp:
+        (WebCore::):
+        * platform/PlatformString.h:
+        * platform/qt/StringQt.cpp:
+        (WebCore::String::String):
+
 2007-07-27  Zack Rusin  <zack@kde.org>
 
         Reviewed by Zack and Lars.
index 187be79e63b57dcfe89a51c36d5123bb4b5b55ba..762dafe726f35bd4ed1bfa45d7a752a2d74fa042 100644 (file)
@@ -1635,6 +1635,7 @@ void XMLTokenizer::parse()
 {
     while (!m_parserStopped && !m_parserPaused && !m_stream.atEnd()) {
         m_stream.readNext();
+            qDebug() << m_stream.tokenType() << m_stream.text().toString();
         switch (m_stream.tokenType()) {
         case QXmlStreamReader::StartDocument: {
             startDocument();
@@ -1718,6 +1719,7 @@ void XMLTokenizer::parseStartElement()
     }
 
     ExceptionCode ec = 0;
+    qDebug() << prefix << prefix.isNull() << localName << localName.isNull() << uri;
     QualifiedName qName(prefix, localName, uri);
     RefPtr<Element> newElement = m_doc->createElement(qName, true, ec);
     if (!newElement) {
index 37cfd20578dc1aa20e333475d6bfd7d1f75d004e..d7b8319888d352f7db314a0372d2a5fa4eae0472 100644 (file)
@@ -168,6 +168,7 @@ public:
 
 #if PLATFORM(QT)
     String(const QString&);
+    String(const QStringRef&);
     operator QString() const;
 #endif
 
index c1d00eee5031c1f81bb5337ad876227d67aaf9e9..6124a10ec37582cf91cc2f56381709287a894dcd 100644 (file)
@@ -35,6 +35,10 @@ namespace WebCore {
 // String conversions
 String::String(const QString& qstr)
 {
+    if (qstr.isNull()) {
+        m_impl = 0;
+        return;
+    }
     unsigned int len = qstr.length();
     const UChar* str = reinterpret_cast<const UChar*>(qstr.constData());
 
@@ -47,6 +51,17 @@ String::String(const QString& qstr)
         m_impl = new StringImpl(str, len);
 }
 
+String::String(const QStringRef& ref)
+{
+    if (!ref.string()) 
+        m_impl = 0;
+    else if (!ref.length()) 
+        m_impl = StringImpl::empty();
+    else
+        m_impl = new StringImpl(reinterpret_cast<const UChar *>(ref.unicode()), ref.length());
+}
+
+    
 String::operator QString() const
 {
     return QString(reinterpret_cast<const QChar*>(characters()), length());