This is a consequence of the poor layout noted in this comment in purge_missing:
if (will_run_mandb)
/* Reset mtime to avoid confusing mandb into not running.
* TODO: It would be better to avoid this by only opening
* the database once between here and mandb.
*/ MYDBM_SET_TIME (dbf, db_mtime);
There are some situations where a later update_db will not actually modify the database and update the mtime, and in this situation purge_missing may have updated the database but reset the mtime to its previous value. The reorganisation implied by this comment would fix this.
This is a consequence of the poor layout noted in this comment in purge_missing:
if (will_run_mandb)
MYDBM_ SET_TIME (dbf, db_mtime);
/* Reset mtime to avoid confusing mandb into not running.
* TODO: It would be better to avoid this by only opening
* the database once between here and mandb.
*/
There are some situations where a later update_db will not actually modify the database and update the mtime, and in this situation purge_missing may have updated the database but reset the mtime to its previous value. The reorganisation implied by this comment would fix this.