.: sw/source
Michael Stahl
mstahl at redhat.com
Thu Aug 9 02:36:50 PDT 2012
On 09/08/12 11:09, Caolán McNamara wrote:
> sw/source/filter/ww1/fltshell.cxx | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> New commits:
> commit 3a1c8eeb694e26835f6f9c010b5d305b57ddd0d5
> Author: Caolán McNamara <caolanm at redhat.com>
> Date: Thu Aug 9 10:06:44 2012 +0100
>
> rtl::OUStrings are supposed to be immutable
>
> The cast away of constness in d64ecf4e94a81d9c1fd4be74c098eb0e58345c60 makes me
> feel icky
not only that, it can be a real bug as well (though isn't in this case).
the OUString, or more precisely the buffer it holds, is immutable by
design, and has a intern() method that effectively enters it into a
global hash-table; if an intern()ed string is later modified then that
hash table is going to be very unhappy (about unhappy hashtables, see
also 3ea6b1c1594fa3fdb7e13c544b3beecd369b67d0).
> - OUString sOut( rIn );
> + OUStringBuffer sOut( rIn );
> if( bAllowCr )
> - {
> - sal_Unicode* pStr = (sal_Unicode*)sOut.getStr();
> - pStr[n] = (sal_Unicode)'\n';
> - }
> + sOut[n] = '\n';
right: if you want to modify an OUString, use OUStringBuffer, that's why
it exists.
More information about the LibreOffice
mailing list