From 66c3655a07e109d88183002192410bcc9866c0f2 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 14 Dec 2011 22:52:07 +0000 Subject: convert ReadCString from ByteString to OString Nobody ever checked the return value anyway, so just return the string and use the stream state bits if necessary to find failures. Doesn't need to be a member, make a standalone function Rename it to read_zeroTerminated_uInt8s_AsO[U]String, stupid perhaps, but *shrug*, unambiguous. Drop misleading overloaded String variants use: read_zeroTerminated_uInt8s_AsOString or read_zeroTerminated_uInt8s_AsOUString added a unit test, valgrinded it, found and fixed invalid read in original implementation. --- svtools/source/urlobj/inetimg.cxx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'svtools/source/urlobj') diff --git a/svtools/source/urlobj/inetimg.cxx b/svtools/source/urlobj/inetimg.cxx index f203fbdee4c6..fff9d170399a 100644 --- a/svtools/source/urlobj/inetimg.cxx +++ b/svtools/source/urlobj/inetimg.cxx @@ -73,8 +73,7 @@ sal_Bool INetImage::Read( SvStream& rIStm, sal_uLong nFormat ) { case SOT_FORMATSTR_ID_INET_IMAGE: { - String sINetImg; - rIStm.ReadCString( sINetImg, RTL_TEXTENCODING_UTF8 ); + String sINetImg = read_zeroTerminated_uInt8s_AsOUString(rIStm, RTL_TEXTENCODING_UTF8); xub_StrLen nStart = 0; aImageURL = sINetImg.GetToken( 0, TOKEN_SEPARATOR, nStart ); aTargetURL = sINetImg.GetToken( 0, TOKEN_SEPARATOR, nStart ); @@ -120,11 +119,11 @@ sal_Bool INetImage::Read( SvStream& rIStm, sal_uLong nFormat ) // skip over iExtraHTML_Offset rIStm.SeekRel( sizeof( int ) ); - rIStm.ReadCString( aImageURL, eSysCSet ); + aImageURL = read_zeroTerminated_uInt8s_AsOUString(rIStm, eSysCSet); if( nAltOffset ) { rIStm.Seek( nFilePos + nAltOffset ); - rIStm.ReadCString( aAlternateText, eSysCSet ); + aAlternateText = read_zeroTerminated_uInt8s_AsOUString(rIStm, eSysCSet); } else if( aAlternateText.Len() ) aAlternateText.Erase(); @@ -132,7 +131,7 @@ sal_Bool INetImage::Read( SvStream& rIStm, sal_uLong nFormat ) if( nAnchorOffset ) { rIStm.Seek( nFilePos + nAnchorOffset ); - rIStm.ReadCString( aTargetURL, eSysCSet ); + aTargetURL = read_zeroTerminated_uInt8s_AsOUString(rIStm, eSysCSet); } else if( aTargetURL.Len() ) aTargetURL.Erase(); -- cgit