... 只要将 0x100 改变 0x80 即可,因为 struct scws_word 中定义的 flag 为 unsigned char 即 8bit, 容不下 0x100 导致,所有的 ->flag |= SCWS_WORD_MALLOCED 失效,以至于在 scws.c 中无法正确的释放这些内存。 再次感谢您的汇报!对于长期运行的程序...
...定义 SCWS_WORD_MALLOCED 的值为 0x100 ,而 struct scws_word 中的 flag 为 unsigned char,故导致该 flag 失效从而造成内存泄露,将其值改为 0x80 即可。此 bug 仅存在于 1.1.0 版。(感谢[url=http://www.hightman.cn/bbs/showthread.php?tid=716]backluck的报告[/url]) ...
...TYPE_VALUE; if ($relevance_first) { $type |= XS_CMD_SORT_FLAG_RELEVANCE; } if ($asc) { $type |= XS_CMD_SORT_FLAG_ASCENDING; } $vno = $this->xs->getField($field, true)->vno; $cmd = new XSCommand(XS_CMD_SEARCH_SET_SORT, $type, $vno); }...
...检查。于是将scws.c的代码做了如下修改, 在890行 if ((r1->flag & SCWS_ZRULE_PREFIX) && (i < (zlen - clen))) { /* prefix, check after (zmin~zmax) */ // 先检查 zmin 字内是否全部符合要求 // 再在 zmax 范围内取得符合...
...TYPE_MULTI; if ($relevance_first) { $type |= XS_CMD_SORT_FLAG_RELEVANCE; } if (!$reverse) { $type |= XS_CMD_SORT_FLAG_ASCENDING; } $cmd = new XSCommand(XS_CMD_SEARCH_SET_SORT, $type, 0, $buf); $this->execCommand($cmd); } return $t...
...rict must add: !$this->_is_digit(ord($this->txt[$start+1]))) if ((pflag & PFLAG_ADDSYM) || ch != 0x2e || !SCWS_IS_DIGIT(txt[start+1])) break; *************** *** 677,683 **** wmap[i][i] = (word_t) pmalloc_z(p, sizeof(word_st)); wmap[i][i]->tf = 0.5; wmap[i][i]->flag |...
...his->_is_digit(ord($this->txt[$start+1]))) if ((pflag & PFLAG_ADDSYM) || ch != 0x2e || !SCWS_IS_DIGIT(txt[start+1])) break; *************** *** 677,683 **** wmap[i][i] = (word_t) pmalloc_z(p, sizeof(word_st)); wmap[i...
...决呢?[hr] 依然是对scws.c进行修改,同样是890行, if ((r1->flag & SCWS_ZRULE_PREFIX) && (i < (zlen - clen))) { /* prefix, check after (zmin~zmax) */ // 先检查 zmin 字内是否全部符合要求 // 再在 zmax 范围内取得符合要求的字 // int i, j, k, ch, clen, start; ...
... throw new XSException('No server connection'); } if ($this->_flag & self::BROKEN) { throw new XSException('Broken server connection'); }} 检测服务端的连接情况
添加索引失败,查看indexd.log: ERROR failed to open/lock the input file (FILE:tmp/touch_db.snd, ERROR:No locks available) indexd[13366] NOTICE import exit (DB:18touch.db, FLAG:0x0000, PID:13600, EXIT:-1) 把touch_db.sn删除掉,仍然会出现这种问题,如何解决?