commit - a4153d5b903b1fe20edad776a6d0ec3c3cbcc0aa
commit + e8bfb8f3994fa8096bf56db895d969b4961f8b4b
blob - 7c0aac05143e35448209231ec4347e3ad6e2252b
blob + 7bd55922b5b83ac06fbadac4c69364802b1a6179
--- lib/object.c
+++ lib/object.c
te1 = find_entry_by_name(tree1, seg, seglen);
if (te1 == NULL) {
err = got_error(GOT_ERR_NO_OBJ);
- goto done;
- }
-
- te2 = find_entry_by_name(tree2, seg, seglen);
- if (te2 == NULL) {
- *changed = 1;
goto done;
}
- mode1 = normalize_mode_for_comparison(te1->mode);
- mode2 = normalize_mode_for_comparison(te2->mode);
- if (mode1 != mode2) {
- *changed = 1;
- goto done;
- }
+ if (tree2)
+ te2 = find_entry_by_name(tree2, seg, seglen);
- if (got_object_id_cmp(&te1->id, &te2->id) == 0) {
- *changed = 0;
- goto done;
+ if (te2) {
+ mode1 = normalize_mode_for_comparison(te1->mode);
+ mode2 = normalize_mode_for_comparison(te2->mode);
+ if (mode1 != mode2) {
+ *changed = 1;
+ goto done;
+ }
+
+ if (got_object_id_cmp(&te1->id, &te2->id) == 0) {
+ *changed = 0;
+ goto done;
+ }
}
if (*s == '\0') { /* final path element */
got_object_tree_close(tree1);
tree1 = next_tree1;
- err = got_object_open_as_tree(&next_tree2, repo,
- &te2->id);
- te2 = NULL;
- if (err)
- goto done;
- if (tree2 != tree02)
- got_object_tree_close(tree2);
- tree2 = next_tree2;
+ if (te2) {
+ err = got_object_open_as_tree(&next_tree2, repo,
+ &te2->id);
+ te2 = NULL;
+ if (err)
+ goto done;
+ if (tree2 != tree02)
+ got_object_tree_close(tree2);
+ tree2 = next_tree2;
+ } else if (tree2) {
+ if (tree2 != tree02)
+ got_object_tree_close(tree2);
+ tree2 = NULL;
+ }
}
}
done: