[Patch] Fix (similarly) libstdc++/9178 and 11305

Paolo Carlini pcarlini@unitus.it
Thu Jun 26 22:44:00 GMT 2003


Martin Sebor wrote:

>> +          int __ext_multiplier = _M_codecvt->encoding();
>> +          if (__ext_multiplier == -1 || __ext_multiplier == 0)
>> +        __ext_multiplier = _M_codecvt->max_length();
>
> FWIW, this doesn't seem quite right when encoding() returns -1.
> The number of external bytes required to produce a single internal
> character could be greater than max_length() (e.g., a whole bunch
> of unshift sequences, one after another, followed by a character). 

Thanks for your feedback.
Yes, we know that (see the comment in showmanyc()), but in fact 
enconding() == -1 is not really supported, right now, here and 
elsewhere. I have only copied, as a placeholder, the same 'if' already 
present in overflow.

Thanks again,
Paolo.



More information about the Libstdc++ mailing list