[Libreoffice] revert incorrectl RTL_CONSTASCII_ usage ...

Michael Meeks michael.meeks at novell.com
Fri Jan 28 09:03:15 PST 2011


Hi there,

	I just had to revert:

    Replace suitable equalsAscii calls with equalsAsciiL.

diff --git a/oox/source/ole/axbinaryreader.cxx b/oox/source/ole/axbinaryreader.cxx
index 36cc2d7..105db2b 100644
--- a/oox/source/ole/axbinaryreader.cxx
+++ b/oox/source/ole/axbinaryreader.cxx
@@ -150,7 +150,7 @@ bool AxFontData::importGuidAndFont( BinaryInputStream& rInStrm )
     OUString aGuid = OleHelper::importGuid( rInStrm );
     if( aGuid.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "{AFC20920-DA4E-11CE-B943-00AA006887B4}" ) ) )
         return importBinaryModel( rInStrm );
-    if( aGuid.equalsAscii( OLE_GUID_STDFONT ) )
+    if( aGuid.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( OLE_GUID_STDFONT ) ) )
         return importStdFont( rInStrm );
     return false;
 }

	This sort of thing.

	The code is not correct; OLE_GUID_STDFONT is a const sal_Char * pointer
- so when we start doing sizeof() on it to detect the string length it
gets a -very- wrong (and dangerous) value. Luckily Caolans' sal patch
breaks the build if you have a recent enough compiler for this. Of
course; quite -why- it is a const sal_Char * I have no idea - it betrays
a lack of faith in the compiler's ability to optimise duplicate string
instances I suspect - prolly worth auditing their use, and fixing that
too. There was some madness before about sharing the same string
instance across modules via. a symbol which just burns space vs. having
it duplicated in two libraries; we should prolly undo that and just use
some defines.

	I thought we had ~nearly finished this hack - of fixing up all the
equalsAscii's that can be safely done :-)

	Thanks,

		Michael.

-- 
 michael.meeks at novell.com  <><, Pseudo Engineer, itinerant idiot




More information about the LibreOffice mailing list