Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


Hi Christina,

On Wednesday, 2013-02-06 13:44:09 +0100, Christina Roßmanith wrote:

-                for (xub_StrLen i = (xub_StrLen)(aStr.Len()-1); i > 0; i++ )
+                for (sal_Int32 i = aStr.getLength()-1; i > 0; i++ )
                 {
-                    if ( (aStr.GetChar( i ) >= '0') && (aStr.GetChar( i ) <= '9') )
+                    if ( (aStr[i] >= '0') && (aStr[i] <= '9') )
                         break;
-                    else if ( aStr.GetChar( i ) == '-' )
+                    else if ( aStr[i] == '-' )
                     {
                         bNegative = sal_True;
                         break;
In

for (sal_Int32 i = aStr.getLength()-1; i > 0; i++ )

i starts with at least -1 is tested to be non negative and
incremented. Is this code ever used??? Or am I failing to see the
magic behind the scenes?
No, that code doesn't make sense and to me looks it should be

    for (sal_Int32 i = aStr.getLength()-1; i > 0; --i)

Awkward guessing of negative currency formats anyway..
Do you think it is ever used?

It probably is, when a currency amount is entered in such field.

It would be an endless loop, wouldn't it?!?

Not really endless ;-)  in some cases the old code would access invalid
memory and probably bail out earlier..

In other cases we were lucky if aStr ended in a digit or '-'

The question is modify to --i or remove some code.

Changing to --i at least does what the code aimed for, detecting
backwards if a character is digit or '-' for these nFormat values:

+            if ( (nFormat == 3) || (nFormat == 6)  || // $1- || 1-$
+                 (nFormat == 7) || (nFormat == 10) )  // 1$- || 1 $-

I've added them as a comment because the numerical codes for the
various formats are quite non intuitive.

Agreed, it's a legacy from pre-i18n-framework-times and we could have
proper named constants instead.

  Eike

-- 
LibreOffice Calc developer. Number formatter stricken i18n transpositionizer.
New GnuPG key 0x65632D3A : 2265 D7F3 A7B0 95CC 3918  630B 6A6C D5B7 6563 2D3A
Old GnuPG key 0x293C05FD : 997A 4C60 CE41 0149 0DB3  9E96 2F1A D073 293C 05FD
Support the FSFE, care about Free Software! https://fsfe.org/support/?erack

Attachment: pgpBS1_yjOJRi.pgp
Description: PGP signature


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.