MDX开源实现无法读取部份图片的问题

这个代码写的并不对.不应该取最小值,而是直接取shadowEndPos.
621行goldendict的代码是RecordIndex.endPosi->first比,
这里的RecordIndex.endPos是这个record块压缩后的结束位置相对于所有压缩后的record块起始位置的偏移(523行).
这里的i类型是pair<qint64, QString>,i->first也就是607行的headWordId,是解压后的记录数据的相对于所有未压缩数据的起始偏移量,显然一个是压缩后的偏移量,一个是没有压缩的偏移量,直接比是没有意义的.
RecordIndex.shadowEndPos是这个块解压后相对于所有未压缩数据的结束偏移量,显然应该只用这个比.
mdictparser.hh中重载的RecordIndexqint64比较== < >的操作符也表面应该用shadow*Pos和headWordId比较.
621行的目的就是如果这个词条的起始偏移大于块的结束偏移,那么就在块的列表中找下一个块的索引(idx),这里的偏移都是解压后的偏移.
我实现的mdx库GitHub - 12101111/mdict_rs: Rust crates to read and use Octopus MDict Dictionary. 和最早的readmdict.py都没有这个问题.这个问题只是goldendict特有的.

2 个赞