[Scummvm-devel] setlocale() doesn't work at Symbian

Torbjörn Andersson eriktorbjorn at telia.com
Sun Mar 1 21:09:20 CET 2015


I don't know if it makes any difference, but when you're calling

     int n = symbian_sscanf("-0.11 123 24.7", "%f %f %f", &ff, &x, &y);

Isn't 'x' and 'y' int, not float? And 'ff' is float, but scanFloat() 
seems to assume it's double. I don't know if that makes any difference 
for the problem you describe, but it sometimes pays to rule out the 
simplest explanations.

Torbjörn

On 2015-03-01 20:52, Федор wrote:
>   I use scanInt as example and create scanFloat but something corrupt stack in this function when run. I try debud in MS visual studio 10 and found :
> 0xcccccccc <wrong pointer> for "va_list ap" and "const char *next" in symbian_sscanf()
>
> Whole file in attach.
>
>
> Fedor Strizhnev
> Федор Стрижнёв.
>
> Чацвер, 19 лютага 2015, 13:58 +01:00 ад Torbjörn Andersson <eriktorbjorn at telia.com>:
>> There is a sscanf() implementation in
>> backends/platform/tizen/sscanf.cpp. I don't know the story behind it,
>> but it might be a good starting point.
>>
>> However, it seems to be missing at the very least floating-point support
>> and assignment-suppression (e.g. "%*u"), both of which are currently
>> used by ZVision.
>>
>> Torbjörn Andersson
>>
>> On 2015-02-19 12:14, Filippos Karapetis wrote:
>>> Well, it looks like sscanf() on Symbian isn't handling floating-point math
>>> correctly (same as most floating point calculations in Symbian).
>>>
>>> This StackOverflow question seems to verify this similar behavior with
>>> atof() under Symbian:
>>>   http://stackoverflow.com/questions/11895686/atof-is-not-taking-entire-value-in-symbian
>>>
>>> If that is indeed the case, the only way to make this work is to roll our
>>> own version of sscanf(), and handle floating-point math for Symbian in
>>> there.
>>>
>>> But that does sound like a major task...
>>>
>>> Regards
>>> Filippos
>>>
>>>
>>>
>>> On Wed, Feb 18, 2015 at 8:43 PM, Федор < fedor_qd at mail.ru > wrote:
>>>
>>>> Result is same.
>>>>
>>>>
>>>> Fedor Strizhnev
>>>> Федор Стрижнёв.
>>>>
>>>> Серада, 18 лютага 2015, 20:35 +02:00 ад Filippos Karapetis <
>>>>   bluegr at gmail.com >:
>>>>
>>>>     You're getting wrong results for sscanf(), which is why ZVision isn't
>>>> working for you
>>>>
>>>> Try putting this line:
>>>> setlocale(LC_ALL, "C");
>>>> before your test code and try again
>>>>
>>>> On Wed, Feb 18, 2015 at 8:23 PM, Федор < fedor_qd at mail.ru
>>>> < https://e.mail.ru/compose/?mailto=mailto%3afedor_qd@mail.ru >> wrote:
>>>>
>>>> I have:
>>>> Test dot: 30.000000
>>>> Test comma: 30.000000
>>>>
>>>> I confused.
>>>>
>>>> Fedor Strizhnev
>>>> Федор Стрижнёв.
>>>>
>>>> Серада, 18 лютага 2015, 14:44 UTC ад Willem Jan Palenstijn <
>>>>   wjp at usecode.org
>>>> < https://e.mail.ru/compose/?mailto=mailto%3awjp@usecode.org >>:
>>>>
>>>>     On Wed, Feb 18, 2015 at 02:42:08PM +0300, Fiodar Strizhniou wrote:
>>>>> Is this test code good?
>>>>>
>>>>>
>>>>> sscanf("30.981", "%f", &y)
>>>>> printf("Test dot: \n")
>>>>> print y;
>>>>> sscanf("30,981", "%f", &y)
>>>>> printf("Test comma: \n")
>>>>> print y;
>>>>
>>>>
>>>> I had a quick look at how ZVision uses sscanf, and something like that
>>>> sounds
>>>> good, yes.
>>>>
>>>> If you want something that actually compiles, try:
>>>>
>>>>           float y;
>>>>           sscanf("30.981", "%f", &y);
>>>>           printf("Test dot: %f\n", y);
>>>>           sscanf("30,981", "%f", &y);
>>>>           printf("Test comma: %f\n", y);
>>>>
>>>>
>>>> You should get as output:
>>>>
>>>> Test dot: 30.981001
>>>> Test comma: 30.000000
>>>>
>>>>
>>>> -Willem Jan
>>>>
>>>>
>>>>> исходное сбщ
>>>>> Тема: Re: [Scummvm-devel] setlocale() doesn't work at Symbian
>>>>> От: Федор < fedor_qd at mail.ru
>>>> < https://e.mail.ru/compose?To=fedor_qd@mail.ru >>
>>>>> Дата: 17.02.2015 17.44
>>>>>
>>>>> I don't know what I need to test. Can you give me peace of code?
>>>>>
>>>>>
>>>>> Fedor Strizhnev
>>>>> Федор Стрижнёв.
>>>>>
>>>>> Аўторак, 17 лютага 2015, 13:47 UTC ад Willem Jan Palenstijn <
>>>>   wjp at usecode.org < https://e.mail.ru/compose?To=wjp@usecode.org >>:
>>>>>> On Tue, Feb 17, 2015 at 04:06:00PM +0300, Fiodar Strizhniou wrote:
>>>>>>> I create bugreport month ago about bad colours in most scenes in
>>>> Zvision engine games. I get point to wrong setlocale() settings in some
>>>> backends. I create and run test app. Nothing works(see screenshot). Also i
>>>> have read somewhere in Symbian Sdk docs what setlocale doesnt work at
>>>> Symbian.
>>>>>>
>>>>>>
>>>>>> You should really say things like that directly, instead of having us
>>>> guess at
>>>>>> what you're trying to do.
>>>>>>
>>>>>>
>>>>>> The main question is: does sscanf work with "%f" for you? And if you
>>>> set locale
>>>>>> to "C" explicitly?
>>>>>>
>>>>>>
>>>>>> -Willem Jan
>>>>>>
>>>>>>
>>>>>>
>>>>>>> исходное сбщ
>>>>>>> Тема: Re: [Scummvm-devel] setlocale() doesn't work at Symbian
>>>>>>> От: Filippos Karapetis <  bluegr at gmail.com
>>>> < https://e.mail.ru/compose?To=bluegr@gmail.com > >
>>>>>>> Дата: 17.02.2015 14.52
>>>>>>>
>>>>>>> You don't use a correct value for the locale
>>>>>>>
>>>>>>> You would want something like:
>>>>>>> setlocale(LC_ALL,"en_GB.ISO-8859-1");
>>>>>>>
>>>>>>> Having said that, check backends/platform/sdl/sdl.cpp, where it does
>>>> this:
>>>>>>> const Common::String locale = setlocale(LC_ALL, "");
>>>>>>>
>>>>>>> // Restore default C locale to prevent issues with
>>>>>>> // portability of sscanf(), atof(), etc.
>>>>>>> // See bug #3615148
>>>>>>> setlocale(LC_ALL, "C");
>>>>>>>
>>>>>>> Be careful when changing the locale, you need to reset it afterwards
>>>> (as
>>>>>>> the comment mentions).
>>>>>>>
>>>>>>> This stackoverflow question may be helpful:
>>>>>>>
>>>>   http://stackoverflow.com/questions/3191664/list-of-all-locales-and-their-short-codes
>>>>>>>
>>>>>>> On Tue, Feb 17, 2015 at 1:08 PM, Fiodar Strizhniou <  fedor_qd at mail.ru
>>>> < https://e.mail.ru/compose?To=fedor_qd@mail.ru > > wrote:
>>>>>>>
>>>>>>>> I write simple application and run on phone:
>>>>>>>> printf("Locale is: %s\n", setlocale(LC_ALL, "en_GB"));
>>>>>>>> Locale is NULL
>>>>>>>> Which parts (decimal separators, etc) should be set? Which values
>>>> from
>>>>>>>> setlocale() used?
>>>>>>>> Always yours, Strizhniou Fedor.
>>>>>>>> С уважением, Стрижнёв Фёдор.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> "Experience is the name every one gives to their mistakes" - Oscar
>>>> Wilde
>>>>>>
>>>>>
>>>>>
>>>>>
>>>> ------------------------------------------------------------------------------
>>>>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>>>>> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
>>>>> with Interactivity, Sharing, Native Excel Exports, App Integration & more
>>>>> Get technology previously reserved for billion-dollar corporations, FREE
>>>>>
>>>>   http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
>>>>> _______________________________________________
>>>>> Scummvm-devel mailing list
>>>>>   Scummvm-devel at lists.sourceforge.net
>>>> < https://e.mail.ru/compose?To=Scummvm%2ddevel@lists.sourceforge.net >
>>>>>   https://lists.sourceforge.net/lists/listinfo/scummvm-devel
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>>>> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
>>>> with Interactivity, Sharing, Native Excel Exports, App Integration & more
>>>> Get technology previously reserved for billion-dollar corporations, FREE
>>>>
>>>>   http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
>>>> _______________________________________________
>>>> Scummvm-devel mailing list
>>>>   Scummvm-devel at lists.sourceforge.net
>>>> < https://e.mail.ru/compose?To=Scummvm%2ddevel@lists.sourceforge.net >
>>>>   https://lists.sourceforge.net/lists/listinfo/scummvm-devel
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> "Experience is the name every one gives to their mistakes" - Oscar Wilde
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>>> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
>>> with Interactivity, Sharing, Native Excel Exports, App Integration & more
>>> Get technology previously reserved for billion-dollar corporations, FREE
>>>   http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
>>>
>>>
>>>
>>> _______________________________________________
>>> Scummvm-devel mailing list
>>>   Scummvm-devel at lists.sourceforge.net
>>>   https://lists.sourceforge.net/lists/listinfo/scummvm-devel
>>>
>>
>>
>> ------------------------------------------------------------------------------
>> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
>>from Actuate! Instantly Supercharge Your Business Reports and Dashboards
>> with Interactivity, Sharing, Native Excel Exports, App Integration & more
>> Get technology previously reserved for billion-dollar corporations, FREE
>> http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Scummvm-devel mailing list
>> Scummvm-devel at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/scummvm-devel
>





More information about the Scummvm-devel mailing list