commit 044e73932dd67a6333fb1991ab83653aeb0e2902 from: Stefan Sperling date: Sun Feb 11 17:35:45 2018 UTC don't assume objects IDs are sorted by their values in packidx commit - eb651edf82ab7e2ac9f92490d1444c3341843ac7 commit + 044e73932dd67a6333fb1991ab83653aeb0e2902 blob - e53d687aa859dea281f6a14ea293c7f2bdcd1ae9 blob + b00eb496bfb5c5a72716d083134d53871f9051c1 --- lib/pack.c +++ lib/pack.c @@ -301,8 +301,6 @@ get_object_idx(struct got_packidx_v2_hdr *packidx, str if (cmp == 0) return i; - else if (cmp > 0) - break; i++; } blob - 7028965f2cdb7f4256b2950f284585ebe185e6cd blob + d3822a3873820aa50772dfe85626d4e8b02d5e2f --- regress/repository/repository_test.c +++ regress/repository/repository_test.c @@ -205,7 +205,38 @@ repo_read_log(const char *repo_path) got_repo_close(repo); return 1; } + +static int +repo_read_tree(const char *repo_path) +{ + const char *tree_sha1 = "6cc96e0e093fb30630ba7f199d0a008b24c6a690"; + const struct got_error *err; + struct got_repository *repo; + struct got_object_id id; + struct got_object *obj; + char hex[SHA1_DIGEST_STRING_LENGTH]; + int i; + size_t len; + + if (!got_parse_sha1_digest(id.sha1, tree_sha1)) + return 0; + + err = got_repo_open(&repo, repo_path); + if (err != NULL || repo == NULL) + return 0; + err = got_object_open(&obj, repo, &id); + if (err != NULL || obj == NULL) + return 0; + if (got_object_get_type(obj) != GOT_OBJ_TYPE_TREE) + return 0; + print_tree_object(obj, "", repo); + test_printf("\n"); + + got_object_close(obj); + got_repo_close(repo); + return (err == NULL); +} static int repo_read_blob(const char *repo_path) { @@ -407,6 +438,7 @@ main(int argc, char *argv[]) return 1; } + RUN_TEST(repo_read_tree(repo_path), "read_tree"); RUN_TEST(repo_read_log(repo_path), "read_log"); RUN_TEST(repo_read_blob(repo_path), "read_blob"); RUN_TEST(repo_diff_blob(repo_path), "diff_blob");