首页 > 解决方案 > 来自 libapt-pkg 的损坏的字符串

问题描述

我正在尝试为 Ubuntu 制作一个类似于 Synaptic 的 GUI 包管理器,它使用 libapt,但遇到了一些与从 pkgCache 获取信息有关的奇怪错误。特别是在使用 pkgIterator 并尝试访问 FullName() 和 Name() 属性时,但 Section() 之类的其他属性很好(您可以在此处查看文档)。

看看 Synaptic 的做法,它非常简单,我尝试 1:1 复制它,但没有成功。

const char *name() {
    const char *n = package->Name();
    if (n == NULL)
        return "";
    return n;
}

这通常会返回一些看起来像是错过了空终止的垃圾字符串。有趣的是,来自存储库的同一组中的包的所有字符串都将具有相同的垃圾文本,而本地安装的包将具有 NULL 指针,因此将返回一个空字符串。

有任何想法吗?我相信我正确打开了 pkgCache 并且迭代器不为 NULL。调试 libapt 时也没有很多地方可以在线查看,因此任何参考资料都会有所帮助!

标签: c++ubuntuaptlib

解决方案


推荐阅读