From 750c29566540c46f5a480beb1e4abe032d6a0484 Mon Sep 17 00:00:00 2001 From: Nishi Date: Sun, 8 Mar 2026 02:40:55 +0900 Subject: [PATCH] fix segfault in example Co-Authored-By: jerryjhird --- example.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/example.c b/example.c index e691eec..286daf2 100644 --- a/example.c +++ b/example.c @@ -54,6 +54,8 @@ int main(int argc, char** argv) { if(h != NULL) { printf("%s:\n", argv[i]); if(xl_parse(h)) { + xl_node_t** r; + n = h->pre; if(n != NULL) { while(n != NULL) { @@ -62,12 +64,20 @@ int main(int argc, char** argv) { } } - // if(h->root != NULL) recursive(h, h->root, INDENT); + /* f(h->root != NULL) recursive(h, h->root, INDENT); */ - xl_node_t** r = xl_get_path(h->root, "book.title"); - int j; - for(j = 0; r[j] != NULL; j++) recursive(h, r[j], INDENT); - free(r); + r = xl_get_path(h->root, "book.title"); + + /* check if book.title dosent exist to prevent SEGFAULT */ + if(r != NULL) { + int j; + for(j = 0; r[j] != NULL; j++) { + recursive(h, r[j], INDENT); + } + free(r); + } else { + printf("book.title not found in %s\n", argv[i]); + } } else { int j; for(j = 0; j < INDENT; j++) printf(" "); @@ -76,4 +86,4 @@ int main(int argc, char** argv) { xl_close(h); } } -} +\}