summaryrefslogtreecommitdiff
path: root/plugins/kaitai/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/kaitai/parser.c')
-rw-r--r--plugins/kaitai/parser.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/plugins/kaitai/parser.c b/plugins/kaitai/parser.c
index 77c15b3..cfe1aa1 100644
--- a/plugins/kaitai/parser.c
+++ b/plugins/kaitai/parser.c
@@ -24,6 +24,9 @@
#include "parser.h"
+#include <assert.h>
+
+
#include "parser-int.h"
@@ -131,7 +134,7 @@ static void g_kaitai_parser_finalize(GKaitaiParser *parser)
* Paramètres : parser = structure Kaitai en cours de parcours. *
* locals = variables locales pour les résolutions de types. *
* content = données binaires à analyser et traduire. *
-* pos = tête de lecture courante. [OUT] *
+* epos = tête de lecture courante. [OUT] *
* record = noeud d'arborescence d'éléments rencontrés. [OUT] *
* *
* Description : Parcourt un contenu binaire selon des spécifications Kaitai. *
@@ -142,18 +145,22 @@ static void g_kaitai_parser_finalize(GKaitaiParser *parser)
* *
******************************************************************************/
-bool g_kaitai_parser_parse_content(GKaitaiParser *parser, kaitai_scope_t *locals, GBinContent *content, vmpa2t *pos, GMatchRecord **record)
+bool g_kaitai_parser_parse_content(GKaitaiParser *parser, kaitai_scope_t *locals, GBinContent *content, ext_vmpa_t *epos, GMatchRecord **record)
{
bool result; /* Bilan à retourner */
GKaitaiParserClass *class; /* Classe de l'instance */
+ *record = NULL;
+
class = G_KAITAI_PARSER_GET_CLASS(parser);
- result = class->parse(parser, locals, content, pos, record);
+ result = class->parse(parser, locals, content, epos, record);
- if (result)
+ if (result && *record != NULL)
remember_last_record(locals, *record);
+ assert((!result && *record == NULL) || result);
+
return result;
}