Bonjour tout le monde,

je cherche à parser à la volée une grande quantité de fichiers HTML, et ce de 2 manières :

1) en crawlant le web
2) en parcourant une arborescence sur le disque.

Ce que je fais, en pseudo-C++ :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
void HTMLReader::parseHTML(char* content, size_t length)
{
  context_s user_data;
  htmlParserCtxtPtr ctxt = htmlCreatePushParserCtxt(...);
  htmlParseChunk(ctxt, content, length, 0);
  htmlParseChunk(ctxt, content, 0, 1);
  htmlFreeParserCtxt(ctxt);
}
Lorsque je fais appel à cette méthode en crawlant le web, pas de soucis apparent, mais lorsque je browse mon disque dur, alors la dernière ligne (htmlFreeParserCtxt) fait segfaulter mon programme, au 2e ou 3e document (copies conformes des documents crawlés sur le web).

Il suffit que je commente cette ligne pour ne pas segfaulter. Je ne vois pas du tout de quoi ça peut venir !

La documentation est peu bavarde, avez-vous déjà eu des soucis similaires ?
Des conseils ?