Kaydet (Commit) cf880b3f authored tarafından Caolán McNamara's avatar Caolán McNamara

refactor ScfTools::ReadCString

fix potential bug on short read which has bugged me for a while
where bytes read is always reduced without a check that byte was
read
üst 66c3655a
...@@ -278,35 +278,16 @@ ScStyleSheet& ScfTools::MakePageStyleSheet( ScStyleSheetPool& rPool, const Strin ...@@ -278,35 +278,16 @@ ScStyleSheet& ScfTools::MakePageStyleSheet( ScStyleSheetPool& rPool, const Strin
ByteString ScfTools::ReadCString( SvStream& rStrm ) ByteString ScfTools::ReadCString( SvStream& rStrm )
{ {
rtl::OStringBuffer aRet; return read_zeroTerminated_uInt8s_AsOString(rStrm);
while (1)
{
sal_Char cChar(0);
rStrm >> cChar;
if (!cChar)
break;
aRet.append(cChar);
}
return aRet.makeStringAndClear();
} }
ByteString ScfTools::ReadCString( SvStream& rStrm, sal_Int32& rnBytesLeft ) ByteString ScfTools::ReadCString( SvStream& rStrm, sal_Int32& rnBytesLeft )
{ {
rtl::OStringBuffer aRet; rtl::OString aRet(read_zeroTerminated_uInt8s_AsOString(rStrm));
rnBytesLeft -= aRet.getLength(); //we read this number of bytes anyway
while (1) if (rStrm.good()) //if the stream is happy we read the null terminator as well
{ --rnBytesLeft;
sal_Char cChar(0); return aRet;
rStrm >> cChar;
rnBytesLeft--;
if (!cChar)
break;
aRet.append(cChar);
}
return aRet.makeStringAndClear();
} }
void ScfTools::AppendCString( SvStream& rStrm, String& rString, rtl_TextEncoding eTextEnc ) void ScfTools::AppendCString( SvStream& rStrm, String& rString, rtl_TextEncoding eTextEnc )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment