<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40517 >

On Thu, 9 Oct 2008 Egor Vyscrebentsov wrote:

> On Tue, 7 Oct 2008 Joan Creus wrote:
>
> > 2008/10/7 Egor Vyscrebentsov <evyscr/gmail.com>
> > >
> > > base_list (and therefore base_buf) for archers at [39,40] (line 1278)
> > > is "????��x�ſ-�\017\b\214�ſ �\b��". Most of these symbols are illegal.
> > >
> > > activity_list for same unit is "????". Wonder if this was one more
> > > out-of-pointer'ing?
> > >
> > It looks like the problem my be in the saving rather than in the loading?
>
> Yes. The problem is in player_save_units() and player_load_units().
> player_save_units() set target base char to '?', and this char isn't
> changed in several cases. player_load_units() assumes that loaded
> char is one of [0-9a-f].
> 
> Quickest (not the best) fix is 
> 
> -          } else if (base_buf) {
> +          } else if (base_buf && base_buf[j] != '?') {
> 
> at server/savegame.c:1862

After some thoughts I've decided that this fix is proper.

> This is the first part of problem. The second part is that in
> savegame file base_list is longer than activity_list.

-      orders_buf[len] = dir_buf[len] = act_buf[len] = '\0';
+      orders_buf[len] = dir_buf[len] = act_buf[len] = base_buf[len] = '\0';

at server/savegame.c:3473

-- 
Thanks, evyscr



_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to