Fix how configuration tables and empdump treat omitted entries
Change xundump to blank out omitted rows. Before, they were left alone. Impact: * No change for reading builtin tables. * Reading custom tables now replaces the builtin tables instead of sort-of-merging them. Wasn't a real merge, because it dropped builtin entries after the last custom entry, except for non-truncatable tables item, sect-chr and infrastructure. * empdump -i now replaces the old state instead of sort-of-merging the dump into the old state. Wasn't a real merge, because it dropped old state entries after the last entry in the dump, except for the fixed-size tables sect, nat, realm and game.
This commit is contained in:
parent
84d88442b3
commit
7457573a50
1 changed files with 6 additions and 1 deletions
|
@ -177,6 +177,7 @@ tbl_next_obj(void)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Omit ID1..ID2-1.
|
* Omit ID1..ID2-1.
|
||||||
|
* Reset the omitted objects to default state.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
omit_ids(int id1, int id2)
|
omit_ids(int id1, int id2)
|
||||||
|
@ -189,8 +190,10 @@ omit_ids(int id1, int id2)
|
||||||
idgap = realloc(idgap, (id2 + 1) * sizeof(*idgap));
|
idgap = realloc(idgap, (id2 + 1) * sizeof(*idgap));
|
||||||
for (i = idgap_max; i < id1; i++)
|
for (i = idgap_max; i < id1; i++)
|
||||||
idgap[i] = 0;
|
idgap[i] = 0;
|
||||||
for (i = id1; i < id2; i++)
|
for (i = id1; i < id2; i++) {
|
||||||
|
ef_blank(cur_type, i, ef_ptr(cur_type, i));
|
||||||
idgap[i] = 1;
|
idgap[i] = 1;
|
||||||
|
}
|
||||||
idgap[id2] = 0;
|
idgap[id2] = 0;
|
||||||
idgap_max = id2;
|
idgap_max = id2;
|
||||||
}
|
}
|
||||||
|
@ -214,6 +217,7 @@ expected_id(int id1, int id2)
|
||||||
* Get the next object, it has record index ID.
|
* Get the next object, it has record index ID.
|
||||||
* Store it in cur_obj, and set cur_id and cur_obj_is_blank accordingly.
|
* Store it in cur_obj, and set cur_id and cur_obj_is_blank accordingly.
|
||||||
* Ensure we're omitting the same objects as the previous parts.
|
* Ensure we're omitting the same objects as the previous parts.
|
||||||
|
* Reset any omitted objects to default state.
|
||||||
* Return 0 on success, -1 on failure.
|
* Return 0 on success, -1 on failure.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
|
@ -253,6 +257,7 @@ tbl_skip_to_obj(int id)
|
||||||
* Finish table part.
|
* Finish table part.
|
||||||
* If the table has variable length, truncate it.
|
* If the table has variable length, truncate it.
|
||||||
* Else ensure we're omitting the same objects as the previous parts.
|
* Else ensure we're omitting the same objects as the previous parts.
|
||||||
|
* Reset any omitted objects to default state.
|
||||||
* Return 0 on success, -1 on failure.
|
* Return 0 on success, -1 on failure.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue