i使用命令的标准./configure ; make ; make install
Trifecta在我的Mac(Darwin <hostname> 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64
)上安装了C Libxml2版本2.9.4库。尝试在没有前缀的XPATH上使用-tree
选项运行testXPath
命令时,我会得到一个分割故障。
~/home/libxml2-2.7.2 $ ./testXPath -tree "/abcde"
In testXPath function...
Compiled Expression : 0 elements
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
END
...etc until:
Segmentation fault: 11
i在testXPath.c
代码中有点挖了,XPath的汇编似乎是错误的。
comp = xmlXPathCompile(BAD_CAST str);
如果我不提供前缀,则返回的xmlXPathCompExprPtr
将其last
成员设置为-1
。这会导致呼叫xmlXPathDebugDumpCompExpr()
疏通。
在XPATH中具有前缀不会导致故障。我做错了吗?
testXPath
是libxml2测试套件的一部分,预计不会直接由用户运行。如果要使用libxml2测试Xpath表达式,请使用xmllint
使用--xpath
选项:
xmllint --xpath 'expr' XMLFILE