Turn DeprecatedStringData's copy constructor into a static method to appease MSVC /W3
authoraroben <aroben@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 29 Jun 2007 17:50:37 +0000 (17:50 +0000)
committeraroben <aroben@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 29 Jun 2007 17:50:37 +0000 (17:50 +0000)
DeprecatedStringData now has no public copy constructor. The single
call to the old one has been replaced with a call to the new
DeprecatedStringData::createAndAdopt static method.

Reviewed by Darin.

All regression tests pass.

* platform/DeprecatedString.cpp:
(WebCore::DeprecatedStringData::createAndAdopt):
(WebCore::DeprecatedStringData::adopt):
(WebCore::DeprecatedString::detachIfInternal):
* platform/DeprecatedString.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@23878 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/platform/DeprecatedString.cpp
WebCore/platform/DeprecatedString.h

index 6467529926e3e13c2f35d396f36799be6c03622d..ca9d6254f8db6440e62cb4d412d7d9220eab22f4 100644 (file)
@@ -1,3 +1,21 @@
+2007-06-29  Adam Roben  <aroben@apple.com>
+
+        Turn DeprecatedStringData's copy constructor into a static method to appease MSVC /W3
+
+        DeprecatedStringData now has no public copy constructor. The single
+        call to the old one has been replaced with a call to the new
+        DeprecatedStringData::createAndAdopt static method.
+
+        Reviewed by Darin.
+
+        All regression tests pass.
+
+        * platform/DeprecatedString.cpp:
+        (WebCore::DeprecatedStringData::createAndAdopt):
+        (WebCore::DeprecatedStringData::adopt):
+        (WebCore::DeprecatedString::detachIfInternal):
+        * platform/DeprecatedString.h:
+
 2007-06-29  Adam Roben  <aroben@apple.com>
 
         Fix more signed/unsigned mismatches uncovered by MSVC /W3
index aad4676f1334b378ef357e49b706d8920bb5a9e4..19261a2279a6beb2120233f534bc378470132cce 100644 (file)
@@ -316,17 +316,25 @@ void DeprecatedStringData::initialize(const char *a, unsigned l)
     }
 }
 
-DeprecatedStringData::DeprecatedStringData(DeprecatedStringData &o)
-    : refCount(1)
-    , _length(o._length)
-    , _unicode(o._unicode)
-    , _ascii(o._ascii)
-    , _maxUnicode(o._maxUnicode)
-    , _isUnicodeValid(o._isUnicodeValid)
-    , _isHeapAllocated(0)
-    , _maxAscii(o._maxAscii)
-    , _isAsciiValid(o._isAsciiValid)
+DeprecatedStringData* DeprecatedStringData::createAndAdopt(DeprecatedStringData &o)
 {
+    DeprecatedStringData* data = new DeprecatedStringData();
+    data->adopt(o);
+    return data;
+}
+
+void DeprecatedStringData::adopt(DeprecatedStringData& o)
+{
+    ASSERT(refCount == 1);
+    _length = o._length;
+    _unicode = o._unicode;
+    _ascii = o._ascii;
+    _maxUnicode = o._maxUnicode;
+    _isUnicodeValid = o._isUnicodeValid;
+    _isHeapAllocated = 0;
+    _maxAscii = o._maxAscii;
+    _isAsciiValid = o._isAsciiValid;
+
     // Handle the case where either the Unicode or 8-bit pointer was
     // pointing to the internal buffer. We need to point at the
     // internal buffer in the new object, and copy the characters.
@@ -580,7 +588,7 @@ inline void DeprecatedString::detachIfInternal()
 {
     DeprecatedStringData *oldData = *dataHandle;
     if (oldData->refCount > 1 && oldData == &internalData) {
-        DeprecatedStringData *newData = new DeprecatedStringData(*oldData);
+        DeprecatedStringData *newData = DeprecatedStringData::createAndAdopt(*oldData);
         newData->_isHeapAllocated = 1;
         newData->refCount = oldData->refCount;
         oldData->refCount = 1;
index 9209b818eac618dddb50f51e2afd6459696ec5c1..34a3dc41c211ec7a5abdd27a55a464fe8b436fcc 100644 (file)
@@ -210,7 +210,7 @@ struct DeprecatedStringData
     void initialize(const char *u, unsigned l);
 
     // Move from destination to source.
-    DeprecatedStringData(DeprecatedStringData &);
+    static DeprecatedStringData* createAndAdopt(DeprecatedStringData &);
 
     ~DeprecatedStringData();
 
@@ -249,6 +249,8 @@ struct DeprecatedStringData
     char _internalBuffer[WEBCORE_DS_INTERNAL_BUFFER_SIZE]; // Pad out to a (((size + 1) & ~15) + 14) size
     
 private:
+    void adopt(DeprecatedStringData&);
+
     DeprecatedStringData(const DeprecatedStringData &);
     DeprecatedStringData &operator=(const DeprecatedStringData &);
 };