d_off is the offset of the *next* entry, not the offset of the current entry.
mentioned in commit 5f1ae50a