summaryrefslogtreecommitdiff
path: root/idl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-01-27 07:57:48 +0000
committerCaolán McNamara <caolanm@redhat.com>2012-01-27 12:59:46 +0000
commit04a32c98be8b890689699068a6147d836d3b2689 (patch)
treee961c41527a7f83c12521f104ca5c83a2c1a2e9c /idl
parentf75694e5b13236248171885633b0a3612940e04a (diff)
use assert to demo equivalence
Diffstat (limited to 'idl')
-rw-r--r--idl/source/objects/types.cxx18
1 files changed, 18 insertions, 0 deletions
diff --git a/idl/source/objects/types.cxx b/idl/source/objects/types.cxx
index 080a9e16f1d6..368e06231883 100644
--- a/idl/source/objects/types.cxx
+++ b/idl/source/objects/types.cxx
@@ -1844,6 +1844,22 @@ void SvMetaTypeEnum::Save( SvPersistStream & rStm )
if( nMask & 0x02 ) write_lenPrefixed_uInt8s_FromOString<sal_uInt16>(rStm, aPrefix);
}
+namespace
+{
+ rtl::OString getCommonSubPrefix(const rtl::OString &rA, const rtl::OString &rB)
+ {
+ sal_Int32 nMax = std::min(rA.getLength(), rB.getLength());
+ sal_Int32 nI = 0;
+ while (nI < nMax)
+ {
+ if (rA[nI] != rB[nI])
+ break;
+ ++nI;
+ }
+ return rA.copy(0, nI);
+ }
+}
+
void SvMetaTypeEnum::ReadContextSvIdl( SvIdlDataBase & rBase,
SvTokenStream & rInStm )
{
@@ -1858,9 +1874,11 @@ void SvMetaTypeEnum::ReadContextSvIdl( SvIdlDataBase & rBase,
aPrefix = aEnumVal->GetName().getString();
else
{
+ rtl::OString sCommonPrefix = getCommonSubPrefix(aPrefix, aEnumVal->GetName().getString());
sal_uInt16 nPos = ByteString(aPrefix).Match( aEnumVal->GetName().getString() );
if( nPos != aPrefix.getLength() && nPos != STRING_MATCH )
aPrefix = aPrefix.copy(0, nPos);
+ assert(sCommonPrefix == aPrefix);
}
aEnumValueList.Append( aEnumVal );
}