NumericBox unsafe double conversion
Zolnai Tamás
zolnaitamas2000 at gmail.com
Fri Mar 22 06:50:57 PDT 2013
2013/3/22 Stephan Bergmann <sbergman at redhat.com>
> On 03/22/2013 11:44 AM, Zolnai Tamás wrote:
>
>> Otherwise in ImplNumericGetValue() the problem of overflow/underflow can
>> be avoid with these lines
>> sal_Int64 nValue = aStr.toInt64()
>> if( OUString::valueOf(nValue) != aStr )
>> {
>> if( bNegative )
>> rValue = SAL_MIN_INT64;
>> else
>> rValue = SAL_MAX_INT64;
>> return sal_True;
>> }
>>
>
> ...but only if aStr is known to be in canonical form, esp. neither
> contains minus zero nor contains excessive leading zero digits. None of
> that is guaranteed for ImplNumericGetValue in its current form (and also
> consider nDecDigits > 0, where input rStr="0" and nDecDigits=2, say, would
> lead to aStr="000" and the above comparison erroneously failing).
>
Oh, that's true. Thanks. I extend the check to take notice of these two
things.
>From that matter, why is that the toInt64() function doesn't pay attention
on overflow/underflow? Maybe it would simpler to handle these "flows" in
that function.
Regards,
Tamás
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20130322/6326c2e2/attachment.html>
More information about the LibreOffice
mailing list