Hightman 论坛

完整版: xdb文件读取小BUG
您当前正在浏览的是一个简化版本. 要观看完整版本, 请点这儿.
该问题位于xdb.c文件的_xdb_to_xtree_node函数

buf = (unsigned char *) malloc(ptr->len + 1);
_xdb_read_data(x, buf, ptr->off, ptr->len);//这里590行

/* save the key & value -> xtree */
voff = buf[16] + 17;

第590行,当_xdb_read_data文件读取失败时(如果offset超过文件大小就会失败),程序还会继续往下执行,这样下面的代码执行将会报错。
理论上讲,正确的xdb文件是不会有你说的这种异常的。但出于全面考虑,即使一切都正确也有可能受到信号中断等 其它异常的干扰。
Reference URL's