#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 9 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...