From 42731f4135c71efa090698a9bc4d8435f55b4d00 Mon Sep 17 00:00:00 2001 From: Vreixo Formoso Date: Sat, 22 Dec 2007 14:32:31 +0100 Subject: [PATCH] Fix bug in create tree, to propertly handle ignored files. Due to a bug, when a file was ignored (for example, a dir whose deep level was greater than 8), all its parents where ignored, what causes root to be ignored! --- src/ecma119_tree.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/ecma119_tree.c b/src/ecma119_tree.c index 2487ac8..07658d8 100644 --- a/src/ecma119_tree.c +++ b/src/ecma119_tree.c @@ -230,13 +230,15 @@ int create_tree(Ecma119Image *image, IsoNode *iso, Ecma119Node **tree, } pos = dir->children; while (pos) { + int cret; Ecma119Node *child; - ret = create_tree(image, pos, &child, depth + 1, max_path); - if (ret < 0) { + cret = create_tree(image, pos, &child, depth + 1, max_path); + if (cret < 0) { /* error */ ecma119_node_free(node); + ret = cret; break; - } else if (ret == ISO_SUCCESS) { + } else if (cret == ISO_SUCCESS) { /* add child to this node */ int nchildren = node->info.dir.nchildren++; node->info.dir.children[nchildren] = child; @@ -505,7 +507,11 @@ int ecma119_tree_create(Ecma119Image *img) Ecma119Node *root; ret = create_tree(img, (IsoNode*)img->image->root, &root, 1, 0); - if (ret < 0) { + if (ret <= 0) { + if (ret == 0) { + /* unexpected error, root ignored!! This can't happen */ + ret = ISO_ERROR; + } return ret; } img->root = root;