Hi,

Although the use of string classes in tools project is commented as 
depreciated, 
they are still used in many codes.

They have constructors with one numeric argument to generate string of one 
character. To protect the misuse of these constructors, the class definition 
includes some other constructors with one numeric argument of different sizes 
and 
the are not implemented so as to detect misuse at link time. (I think it better 
to 
declare them as private so that any misuse can be detected at compilation.)

However, there still exist some misuses of the constructor with one numeric 
character. For example, in toolkit/source/awt/vclxprinter.cxx, the function 
VCLXPrinterPropertySet::getFormDescriptions includes the following fragment.

        for ( sal_uInt16 n = 0; n < nPaperBinCount; n++ ) 
        {
                // Format: 
<DisplayFormName;FormNameId;DisplayPaperBinName;PaperBinNameId;DisplayPaperName;Pa
perNameId>
                String aDescr( RTL_CONSTASCII_USTRINGPARAM( "*;*;" ) );
                aDescr += GetPrinter()->GetPaperBinName( n );
                aDescr += ';';
                aDescr += n;
                aDescr.AppendAscii( ";*;*", 4 );

                aDescriptions.getArray()[n] = aDescr;
        }

I suspect that it is a misuse of String(sal_Unicode).

IMHO, even though we have to have some cumbersome work to rewrite existing 
codes, 
these constructors with one numeric argument should be declared as explicit to 
avoid silly misuses completely.

tono (Takashi Ono)

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to