Commit cf7850a4 by Vicent Marti

Duplicated type object

parent 8842c75f
...@@ -22,9 +22,9 @@ enum { ...@@ -22,9 +22,9 @@ enum {
typedef struct { typedef struct {
git_oid oid; git_oid oid;
int32_t type; int16_t type;
uint16_t flags;
size_t size; size_t size;
uint32_t flags;
git_atomic refcount; git_atomic refcount;
} git_cached_obj; } git_cached_obj;
......
...@@ -71,8 +71,6 @@ static int create_object(git_object **object_out, git_otype type) ...@@ -71,8 +71,6 @@ static int create_object(git_object **object_out, git_otype type)
return -1; return -1;
} }
object->type = type;
*object_out = object; *object_out = object;
return 0; return 0;
} }
...@@ -92,17 +90,16 @@ int git_object__from_odb_object( ...@@ -92,17 +90,16 @@ int git_object__from_odb_object(
return GIT_ENOTFOUND; return GIT_ENOTFOUND;
} }
type = odb_obj->cached.type; if ((error = create_object(&object, odb_obj->cached.type)) < 0)
if ((error = create_object(&object, type)) < 0)
return error; return error;
/* Initialize parent object */ /* Initialize parent object */
git_oid_cpy(&object->cached.oid, &odb_obj->cached.oid); git_oid_cpy(&object->cached.oid, &odb_obj->cached.oid);
object->cached.size = odb_obj->cached.size; object->cached.size = odb_obj->cached.size;
object->cached.type = odb_obj->cached.type;
object->repo = repo; object->repo = repo;
switch (type) { switch (object->cached.type) {
case GIT_OBJ_COMMIT: case GIT_OBJ_COMMIT:
error = git_commit__parse((git_commit *)object, odb_obj); error = git_commit__parse((git_commit *)object, odb_obj);
break; break;
...@@ -167,7 +164,7 @@ int git_object_lookup_prefix( ...@@ -167,7 +164,7 @@ int git_object_lookup_prefix(
if (cached->flags == GIT_CACHE_STORE_PARSED) { if (cached->flags == GIT_CACHE_STORE_PARSED) {
object = (git_object *)cached; 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); git_object_free(object);
giterr_set(GITERR_INVALID, giterr_set(GITERR_INVALID,
"The requested type does not match the type in ODB"); "The requested type does not match the type in ODB");
...@@ -231,7 +228,7 @@ void git_object__free(void *_obj) ...@@ -231,7 +228,7 @@ void git_object__free(void *_obj)
assert(object); assert(object);
switch (object->type) { switch (object->cached.type) {
case GIT_OBJ_COMMIT: case GIT_OBJ_COMMIT:
git_commit__free((git_commit *)object); git_commit__free((git_commit *)object);
break; break;
...@@ -271,7 +268,7 @@ const git_oid *git_object_id(const git_object *obj) ...@@ -271,7 +268,7 @@ const git_oid *git_object_id(const git_object *obj)
git_otype git_object_type(const git_object *obj) git_otype git_object_type(const git_object *obj)
{ {
assert(obj); assert(obj);
return obj->type; return obj->cached.type;
} }
git_repository *git_object_owner(const git_object *obj) git_repository *git_object_owner(const git_object *obj)
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
struct git_object { struct git_object {
git_cached_obj cached; git_cached_obj cached;
git_repository *repo; git_repository *repo;
git_otype type;
}; };
/* fully free the object; internal method, DO NOT EXPORT */ /* fully free the object; internal method, DO NOT EXPORT */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment