C-省略XPATH(LIBXML2)中的前缀会导致分割故障



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

最新更新