xubody() neglected to check ef_truncate()'s return value. Two failure
modes: invalid arguments, and ftruncate() failure. The former
shouldn't happen, and the latter can happen only for file-backed
tables, hence only in empdump -i.
maxid = ep->fids;
if (maxid < ep->fids) {
if (EF_IS_GAME_STATE(cur_type)
maxid = ep->fids;
if (maxid < ep->fids) {
if (EF_IS_GAME_STATE(cur_type)
- || (cur_type >= EF_SHIP_CHR && cur_type <= EF_NUKE_CHR))
- ef_truncate(cur_type, maxid);
- else
+ || (cur_type >= EF_SHIP_CHR && cur_type <= EF_NUKE_CHR)) {
+ if (!ef_truncate(cur_type, maxid))
+ return -1;
+ } else
return gripe("Table %s requires %d rows, got %d",
ef_nameof(cur_type), ep->fids, maxid);
}
return gripe("Table %s requires %d rows, got %d",
ef_nameof(cur_type), ep->fids, maxid);
}