make OUString::copy() clip

Eike Rathke erack at
Thu Aug 2 05:16:28 PDT 2012

Hi Michael,

On Wednesday, 2012-08-01 22:02:50 +0200, Michael Stahl wrote:

> On 01/08/12 19:05, Eike Rathke wrote:
> > On Wednesday, 2012-08-01 18:17:12 +0200, Stephan Bergmann wrote:
> > 
> >> make rtl::OUString::copy(beginIndex, count) clip to [0..length)?
> >> yeah, why not  (then again, -1's sentinel nature, cf. indexOf, might
> >> mean that silent clipping of beginIndex=-1 to beginIndex=0 is
> >> unfortunate)
> > 
> > We may step into more of these traps in transitions from String to
> > OUString, so clipping IMHO is good.
> > 
> > I think beginIndex<0 or count<=0 should always return an empty string
> > and output a SAL_WARN, maybe also SAL_WARN if clipping occurred as that
> > may indicate a logic error.
> no, it should assert().  passing in invalid indexes is clearly a bug
> that must be fixed.

Well, yes, but the assert() hits only with debug, in non-debug build the
copy() happily (probably depending on memory layout) may copy excess
characters on Linux while it may crash on Windows or Mac. So for many
developers it may still go unnoticed.

My suggestion then: keep the assert() for debug/dbgutil heroes but clip
thereafter for when the assert() is not active.


LibreOffice Calc developer. Number formatter stricken i18n transpositionizer.
GnuPG key 0x293C05FD : 997A 4C60 CE41 0149 0DB3  9E96 2F1A D073 293C 05FD
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <>

More information about the LibreOffice mailing list