mirror of
https://git.proxmox.com/git/libgit2
synced 2026-01-04 17:30:38 +00:00
Duplicated type object
This commit is contained in:
parent
8842c75f17
commit
cf7850a4f7
@ -22,9 +22,9 @@ enum {
|
||||
|
||||
typedef struct {
|
||||
git_oid oid;
|
||||
int32_t type;
|
||||
int16_t type;
|
||||
uint16_t flags;
|
||||
size_t size;
|
||||
uint32_t flags;
|
||||
git_atomic refcount;
|
||||
} git_cached_obj;
|
||||
|
||||
|
||||
15
src/object.c
15
src/object.c
@ -71,8 +71,6 @@ static int create_object(git_object **object_out, git_otype type)
|
||||
return -1;
|
||||
}
|
||||
|
||||
object->type = type;
|
||||
|
||||
*object_out = object;
|
||||
return 0;
|
||||
}
|
||||
@ -92,17 +90,16 @@ int git_object__from_odb_object(
|
||||
return GIT_ENOTFOUND;
|
||||
}
|
||||
|
||||
type = odb_obj->cached.type;
|
||||
|
||||
if ((error = create_object(&object, type)) < 0)
|
||||
if ((error = create_object(&object, odb_obj->cached.type)) < 0)
|
||||
return error;
|
||||
|
||||
/* Initialize parent object */
|
||||
git_oid_cpy(&object->cached.oid, &odb_obj->cached.oid);
|
||||
object->cached.size = odb_obj->cached.size;
|
||||
object->cached.type = odb_obj->cached.type;
|
||||
object->repo = repo;
|
||||
|
||||
switch (type) {
|
||||
switch (object->cached.type) {
|
||||
case GIT_OBJ_COMMIT:
|
||||
error = git_commit__parse((git_commit *)object, odb_obj);
|
||||
break;
|
||||
@ -167,7 +164,7 @@ int git_object_lookup_prefix(
|
||||
if (cached->flags == GIT_CACHE_STORE_PARSED) {
|
||||
object = (git_object *)cached;
|
||||
|
||||
if (type != GIT_OBJ_ANY && type != object->type) {
|
||||
if (type != GIT_OBJ_ANY && type != object->cached.type) {
|
||||
git_object_free(object);
|
||||
giterr_set(GITERR_INVALID,
|
||||
"The requested type does not match the type in ODB");
|
||||
@ -231,7 +228,7 @@ void git_object__free(void *_obj)
|
||||
|
||||
assert(object);
|
||||
|
||||
switch (object->type) {
|
||||
switch (object->cached.type) {
|
||||
case GIT_OBJ_COMMIT:
|
||||
git_commit__free((git_commit *)object);
|
||||
break;
|
||||
@ -271,7 +268,7 @@ const git_oid *git_object_id(const git_object *obj)
|
||||
git_otype git_object_type(const git_object *obj)
|
||||
{
|
||||
assert(obj);
|
||||
return obj->type;
|
||||
return obj->cached.type;
|
||||
}
|
||||
|
||||
git_repository *git_object_owner(const git_object *obj)
|
||||
|
||||
@ -11,7 +11,6 @@
|
||||
struct git_object {
|
||||
git_cached_obj cached;
|
||||
git_repository *repo;
|
||||
git_otype type;
|
||||
};
|
||||
|
||||
/* fully free the object; internal method, DO NOT EXPORT */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user