summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2013-04-03 23:09:54 +0200
committerVicent Marti <tanoku@gmail.com>2013-04-22 16:50:50 +0200
commitcf7850a4f70a1153ed640744750391d99000d546 (patch)
treed17ecf605d0ef52e55cbfbbaf3f3fb17263d013d /src
parent8842c75f172ed94be4ad11521d4083e97d740785 (diff)
downloadlibgit2-cf7850a4f70a1153ed640744750391d99000d546.tar.gz
Duplicated type object
Diffstat (limited to 'src')
-rw-r--r--src/cache.h4
-rw-r--r--src/object.c15
-rw-r--r--src/object.h1
3 files changed, 8 insertions, 12 deletions
diff --git a/src/cache.h b/src/cache.h
index 3633f62a7..d57f244dd 100644
--- a/src/cache.h
+++ b/src/cache.h
@@ -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;
diff --git a/src/object.c b/src/object.c
index 2667fcaf1..80b765ef9 100644
--- a/src/object.c
+++ b/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)
diff --git a/src/object.h b/src/object.h
index c1e50593c..d187c55b7 100644
--- a/src/object.h
+++ b/src/object.h
@@ -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 */