Bug #1646 » 1646.v2.patch
| server/savegame/savegame2.c | ||
|---|---|---|
|           /* An invalid order. Just drop the orders for this unit. */ | ||
|           free(punit->orders.list); | ||
|           punit->orders.list = NULL; | ||
|           punit->orders.length = 0; | ||
|           punit->has_orders = FALSE; | ||
|           punit->goto_tile = NULL; | ||
|           break; | ||
|         } | ||
| ... | ... | |
|         } | ||
|       } | ||
|     } else { | ||
|       punit->goto_tile = NULL; | ||
|       punit->has_orders = FALSE; | ||
|       punit->orders.list = NULL; | ||
|       punit->orders.length = 0; | ||
|       (void) secfile_entry_lookup(loading->file, "%s.orders_index", unitstr); | ||
|       (void) secfile_entry_lookup(loading->file, "%s.orders_repeat", unitstr); | ||
| ... | ... | |
|   players_iterate(pplayer) { | ||
|     unit_list_iterate_safe(pplayer->units, punit) { | ||
|       if (!unit_order_list_is_sane(&(wld.map), punit->orders.length, | ||
|                                    punit->orders.list)) { | ||
|       if (punit->has_orders | ||
|           && !unit_order_list_is_sane(&(wld.map), punit->orders.length, | ||
|                                       punit->orders.list)) { | ||
|         log_sg("Invalid unit orders for unit %d.", punit->id); | ||
|         free_unit_orders(punit); | ||
|       } | ||
| server/savegame/savegame3.c | ||
|---|---|---|
|           /* An invalid order. Just drop the orders for this unit. */ | ||
|           free(punit->orders.list); | ||
|           punit->orders.list = NULL; | ||
|           punit->orders.length = 0; | ||
|           punit->has_orders = FALSE; | ||
|           punit->goto_tile = NULL; | ||
|           break; | ||
|         } | ||
| ... | ... | |
|             /* Missing required action extra target. */ | ||
|             free(punit->orders.list); | ||
|             punit->orders.list = NULL; | ||
|             punit->orders.length = 0; | ||
|             punit->has_orders = FALSE; | ||
|             punit->goto_tile = NULL; | ||
|             break; | ||
|           } | ||
|         } else if (order->order != ORDER_PERFORM_ACTION) { | ||
| ... | ... | |
|       int j; | ||
|       punit->has_orders = FALSE; | ||
|       punit->goto_tile = NULL; | ||
|       punit->orders.list = NULL; | ||
|       punit->orders.length = 0; | ||
|       (void) secfile_entry_lookup(loading->file, "%s.orders_index", unitstr); | ||
|       (void) secfile_entry_lookup(loading->file, "%s.orders_repeat", unitstr); | ||
| ... | ... | |
|   players_iterate(pplayer) { | ||
|     unit_list_iterate_safe(pplayer->units, punit) { | ||
|       if (!unit_order_list_is_sane(&(wld.map), punit->orders.length, | ||
|                                    punit->orders.list)) { | ||
|       if (punit->has_orders | ||
|           && !unit_order_list_is_sane(&(wld.map), punit->orders.length, | ||
|                                       punit->orders.list)) { | ||
|         log_sg("Invalid unit orders for unit %d.", punit->id); | ||
|         free_unit_orders(punit); | ||
|       } | ||