2017-08-31 3 views
1

J'ai installé C libxml2 version 2.9.4 library sur mon 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) en utilisant le trio de commandes standard ./configure ; make ; make install. En essayant d'exécuter la commande testXPath avec l'option -tree sur un XPATH sans préfixe, j'obtiens une erreur de segmentation.Le préfixe d'omission dans XPATH (libxml2) conduit à un défaut de segmentation

~/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 

Je creusèrent un peu dans le code testXPath.c et la compilation du XPATH semble être défectueux.

comp = xmlXPathCompile(BAD_CAST str); 

Le xmlXPathCompExprPtr retourné a son membre last établi pour être -1 si je ne fournit pas de préfixe. Cela provoque l'appel à xmlXPathDebugDumpCompExpr() à pépins. Le fait d'avoir un préfixe dans le chemin xpath ne provoque pas l'erreur

Est-ce que je fais quelque chose de mal?

+0

Je ne sais pas pourquoi cela se downvoted. – ShivanKaul

+0

Malheureusement, SO vous permet de downvote sans donner de raison. Parfois, cela signifie simplement que quelqu'un passe une mauvaise journée. –

Répondre

0

testXPath fait partie de la suite de tests libxml2 et ne devrait pas être exécutée directement par les utilisateurs. Si vous voulez tester les expressions XPath avec libxml2, utilisez xmllint avec l'option --xpath:

xmllint --xpath 'expr' XMLFILE 
+0

'xmlXPathCompile()', cependant, * fait partie de la bibliothèque destinée aux utilisateurs. C'est ce qui retourne des valeurs erronées. – ShivanKaul

+0

@ShivanKaul Si vous pensez qu'il y a un bug dans 'xmlXPathCompile', alors déposez un [rapport de bogue] (https://bugzilla.gnome.org/). – nwellnhof