diff --git a/src/common/kernel/save.c b/src/common/kernel/save.c index b8793e57f..31634d52d 100644 --- a/src/common/kernel/save.c +++ b/src/common/kernel/save.c @@ -545,21 +545,30 @@ read_items(struct storage * store, item **ilist) static void read_alliances(struct storage * store) { - int id; + char pbuf[8]; + int id, terminator = 0; if (store->versionr_id(store); - while (id!=0) { + if (store->versionr_str_buf(store, pbuf, sizeof(pbuf)); + id = atoi36(pbuf); + } else { + id = store->r_id(store); + } + while (id!=terminator) { char aname[128]; alliance * al; store->r_str_buf(store, aname, sizeof(aname)); al = makealliance(id, aname); if (store->version>=ALLIANCELEADER_VERSION) { read_reference(&al->leader, store, read_faction_reference, resolve_faction); + id = store->r_id(store); + } else{ + store->r_str_buf(store, pbuf, sizeof(pbuf)); + id = atoi36(pbuf); } - id = store->r_id(store); } }