Be more careful about tree entry modes.
[git.git] / tree.c
diff --git a/tree.c b/tree.c
index 4a26603..468f99e 100644 (file)
--- a/tree.c
+++ b/tree.c
@@ -122,8 +122,10 @@ int parse_tree(struct tree *item)
 
                entry = xmalloc(sizeof(struct tree_entry_list));
                entry->name = strdup(path + 1);
-               entry->directory = S_ISDIR(mode);
-               entry->executable = mode & S_IXUSR;
+               entry->directory = S_ISDIR(mode) != 0;
+               entry->executable = (mode & S_IXUSR) != 0;
+               entry->symlink = S_ISLNK(mode) != 0;
+               entry->mode = mode;
                entry->next = NULL;
 
                bufptr += len + 20;