0
我与zlib的1.2.8源代码http://zlib.net/
在代码工作,最小的匹配值“MIN_MATCH”是“3”(在zutil.h)如何修改zlib MIN_MATCH值?
现在我想修改从该值3到4,所以我修改了zutil.h
并且在deflate.c一个代码
/* Initialize the hash value now that we have some input: */
if (s->lookahead + s->insert >= MIN_MATCH) {
uInt str = s->strstart - s->insert;
s->ins_h = s->window[str];
UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
#if MIN_MATCH != 3
Call UPDATE_HASH() MIN_MATCH-3 more times
#endif
while (s->insert) {
UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
#ifndef FASTEST
s->prev[str & s->w_mask] = s->head[s->ins_h];
#endif
s->head[s->ins_h] = (Pos)str;
str++;
s->insert--;
if (s->lookahead + s->insert < MIN_MATCH)
break;
}
}
和
s->strstart += s->match_length;
s->match_length = 0;
s->ins_h = s->window[s->strstart];
UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
#if MIN_MATCH != 3
Call UPDATE_HASH() MIN_MATCH-3 more times
#endif
/* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
* matter since it will be recomputed at next deflate call.
*/
所以我修改象下面
/* Initialize the hash value now that we have some input: */
if (s->lookahead + s->insert >= MIN_MATCH) {
uInt str = s->strstart - s->insert;
s->ins_h = s->window[str];
UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
#if MIN_MATCH != 3
//Call UPDATE_HASH() MIN_MATCH-3 more times
UPDATE_HASH(s, s->ins_h, s->window[str + 1]);
#endif
while (s->insert) {
UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]);
#ifndef FASTEST
s->prev[str & s->w_mask] = s->head[s->ins_h];
#endif
s->head[s->ins_h] = (Pos)str;
str++;
s->insert--;
if (s->lookahead + s->insert < MIN_MATCH)
break;
}
}
和
s->strstart += s->match_length;
s->match_length = 0;
s->ins_h = s->window[s->strstart];
UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
#if MIN_MATCH != 3
//Call UPDATE_HASH() MIN_MATCH-3 more times
UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
#endif
/* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
* matter since it will be recomputed at next deflate call.
*/
代码(我把UPDATE_HASH()函数下的 '如果MIN_MATCH!= 3' 线)
和我编译,使用坎特伯雷语料库基准文件运行“minigzip”测试程序
压缩工作没有错误,但解压缩不能与'不正确的数据检查'错误r消息
我该如何修改代码? 有人有想法吗?
感谢
感谢您的评论。我会尝试的 –