#1114 closed defect/bug (fixed)
WinCE Route Description turn point error
Reported by: | алексей черепанов | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | port/wince | Version: | git master |
Severity: | Keywords: | ||
Cc: |
Description
On WinCE when select Route Description turn points are
"Turn $s$s $s$s"
and don't contain any information.
Attachments (1)
Change History (12)
comment:1 Changed 10 years ago by tryagain
comment:2 Changed 10 years ago by алексей черепанов
I set cache_size="500000" as you propose in http://trac.navit-project.org/ticket/1115 and there is no effect. There was no this bug a few week ago. I was very surprised when I found it today.
comment:3 Changed 10 years ago by алексей черепанов
I have explored SVN and found that error starts with r5467, previous r5463 shows route description correctly.
comment:4 Changed 10 years ago by алексей черепанов
It is very strange. Something is wrong with glib support on WinCE. Format specification %n$s doesn't work correctly. I made it work with this patch.
Index: navit/navigation.c =================================================================== --- navit/navigation.c (revision 5490) +++ navit/navigation.c (working copy) @@ -1675,10 +1675,12 @@ if (level != -2) { /* TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' */ - ret=g_strdup_printf(_("Turn %1$s%2$s %3$s%4$s"), strength, dir, d, destination ? destination:""); +// ret=g_strdup_printf(_("Turn %1$s%2$s %3$s%4$s"), strength, dir, d, destination ? destination:""); + ret=g_strdup_printf(_("Turn %s%s %s%s"), strength, dir, d, destination ? destination:""); } else { /* TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination */ - ret=g_strdup_printf(_("then turn %1$s%2$s %3$s%4$s"), strength, dir, d, destination ? destination:""); +// ret=g_strdup_printf(_("then turn %1$s%2$s %3$s%4$s"), strength, dir, d, destination ? destination:""); + ret=g_strdup_printf(_("then turn %s%s %s%s"), strength, dir, d, destination ? destination:""); } g_free(destination); } else { Index: po/ru.po.in =================================================================== --- po/ru.po.in (revision 5490) +++ po/ru.po.in (working copy) @@ -243,13 +243,13 @@ #. TRANSLATORS: The first argument is strength, the second direction, the third distance and the fourth destination Example: 'Turn 'slightly' 'left' in '100 m' 'onto baker street' #, c-format -msgid "Turn %1$s%2$s %3$s%4$s" -msgstr "Сверните %1$s%2$s %3$s%4$s" +msgid "Turn %s%s %s%s" +msgstr "Поверните %s %s %s %s" #. TRANSLATORS: First argument is strength, second direction, third how many roads to skip, fourth destination #, c-format -msgid "then turn %1$s%2$s %3$s%4$s" -msgstr "после чего поверните %1$s%2$s на %3$s%4$s" +msgid "then turn %s%s %s%s" +msgstr "после чего поверните %s%s на %s%s" #, c-format msgid "You have reached your destination %s"
comment:5 Changed 10 years ago by ftom.myopenid.com
Same here on my Windows Embedded CE 6.0 Core device.
I am not sure, but it seems that the define HAVE_GOOD_PRINTF (used in support/glib/gprintfint.h) is set, so the printf functions of the library coming with the compiler are used.
The CeGCC uses newlib. There is a switch "_WANT_IO_POS_ARGS" to (de)activate positional arguments: http://sourceforge.net/p/cegcc/code/HEAD/tree/trunk/cegcc/src/newlib/newlib/newlib.hin Perhaps this option is deactivated in the compiler package 0.59.1?
Changed 10 years ago by ftom.myopenid.com
patch generated by svn diff, uses glib/gnulib printf for wince build
comment:6 Changed 10 years ago by ftom.myopenid.com
I have added a patch which uses the glib/gnulib printf implementation instead of the compiler/toolchains printf. The gnulib-printf files comes from the offical glib package. It supports positional arguments and fixes the described issue on my Win CE device.
comment:7 Changed 10 years ago by алексей черепанов
Thanks. It works.
comment:8 Changed 10 years ago by hyperentang.wordpress.com
I am seeing this problem in navit-svn-5532 downloaded today. winCE core 5.0. If I understand above, this should have been fixed?
comment:9 Changed 10 years ago by алексей черепанов
I compiled Navit with this patch and got working executable. But this patch is not included in SVN yet.
comment:10 Changed 10 years ago by tryagain
- Resolution set to fixed
- Status changed from new to closed
Hi!
Thank you for your help in tracing it down and for the patch. Patch was modified to not compile the dead *printf code on OSes (Android, for example), for which builds depend on support/glib but do not require printf replacement.
Fixed with r5539.
comment:11 Changed 10 years ago by tryagain
By the time r5539 was commited we already had printf positional arguments implementation imported with libintl as part of autotools and its copy under navit/intl_cmake.
So I have reverted the r5539 and fixed the bug again with r5554, avoiding unnecessary import of similar code under glib.
tryagain.
Same as #1115, I can't reproduce, most probably you've ran out of memory...