fixes bug 281056 "make --disable-v1-string-abi build again" r+sr=bryner

git-svn-id: svn://10.0.0.236/trunk@168898 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
darin%meer.net
2005-02-07 04:00:02 +00:00
parent fa13c13dad
commit 97e4a99da0

View File

@@ -133,7 +133,9 @@ class nsAStringAccessor : public nsAString
nsAStringAccessor(); // NOT IMPLEMENTED
public:
#ifdef MOZ_V1_STRING_ABI
const void *vtable() const { return mVTable; }
#endif
char_type *data() const { return mData; }
size_type length() const { return mLength; }
PRUint32 flags() const { return mFlags; }
@@ -153,7 +155,9 @@ class nsACStringAccessor : public nsACString
nsACStringAccessor(); // NOT IMPLEMENTED
public:
#ifdef MOZ_V1_STRING_ABI
const void *vtable() const { return mVTable; }
#endif
char_type *data() const { return mData; }
size_type length() const { return mLength; }
PRUint32 flags() const { return mFlags; }
@@ -229,8 +233,11 @@ nsStringBuffer::FromString(const nsAString& str)
const nsAStringAccessor* accessor =
NS_STATIC_CAST(const nsAStringAccessor*, &str);
if (accessor->vtable() != nsObsoleteAString::sCanonicalVTable ||
!(accessor->flags() & nsSubstring::F_SHARED))
#ifdef MOZ_V1_STRING_ABI
if (accessor->vtable() != nsObsoleteAString::sCanonicalVTable)
return nsnull;
#endif
if (!(accessor->flags() & nsSubstring::F_SHARED))
return nsnull;
return FromData(accessor->data());
@@ -242,8 +249,11 @@ nsStringBuffer::FromString(const nsACString& str)
const nsACStringAccessor* accessor =
NS_STATIC_CAST(const nsACStringAccessor*, &str);
if (accessor->vtable() != nsObsoleteACString::sCanonicalVTable ||
!(accessor->flags() & nsCSubstring::F_SHARED))
#ifdef MOZ_V1_STRING_ABI
if (accessor->vtable() != nsObsoleteACString::sCanonicalVTable)
return nsnull;
#endif
if (!(accessor->flags() & nsCSubstring::F_SHARED))
return nsnull;
return FromData(accessor->data());
@@ -255,21 +265,21 @@ nsStringBuffer::ToString(PRUint32 len, nsAString &str)
PRUnichar* data = NS_STATIC_CAST(PRUnichar*, Data());
nsAStringAccessor* accessor = NS_STATIC_CAST(nsAStringAccessor*, &str);
#ifdef MOZ_V1_STRING_ABI
if (accessor->vtable() != nsObsoleteAString::sCanonicalVTable)
{
str.Assign(data, len);
return;
}
else
{
NS_ASSERTION(data[len] == PRUnichar(0), "data should be null terminated");
#endif
NS_ASSERTION(data[len] == PRUnichar(0), "data should be null terminated");
// preserve class flags
PRUint32 flags = accessor->flags();
flags = (flags & 0xFFFF0000) | nsSubstring::F_SHARED | nsSubstring::F_TERMINATED;
// preserve class flags
PRUint32 flags = accessor->flags();
flags = (flags & 0xFFFF0000) | nsSubstring::F_SHARED | nsSubstring::F_TERMINATED;
AddRef();
accessor->set(data, len, flags);
}
AddRef();
accessor->set(data, len, flags);
}
void
@@ -278,21 +288,21 @@ nsStringBuffer::ToString(PRUint32 len, nsACString &str)
char* data = NS_STATIC_CAST(char*, Data());
nsACStringAccessor* accessor = NS_STATIC_CAST(nsACStringAccessor*, &str);
#ifdef MOZ_V1_STRING_ABI
if (accessor->vtable() != nsObsoleteACString::sCanonicalVTable)
{
str.Assign(data, len);
return;
}
else
{
NS_ASSERTION(data[len] == char(0), "data should be null terminated");
#endif
NS_ASSERTION(data[len] == char(0), "data should be null terminated");
// preserve class flags
PRUint32 flags = accessor->flags();
flags = (flags & 0xFFFF0000) | nsCSubstring::F_SHARED | nsCSubstring::F_TERMINATED;
// preserve class flags
PRUint32 flags = accessor->flags();
flags = (flags & 0xFFFF0000) | nsCSubstring::F_SHARED | nsCSubstring::F_TERMINATED;
AddRef();
accessor->set(data, len, flags);
}
AddRef();
accessor->set(data, len, flags);
}
// ---------------------------------------------------------------------------