On Thursday 2007 June 28, Andy Parkins wrote: > So, I think there are two faults: git-prune is deciding that the object is > a blob, when it's actually a commit; and git-prune's error handling is > broken in that case, because it's continuing with the NULL pointer returned > by check_commit() when obj->type != OBJ_COMMIT. I can't figure it out I'm afraid. I've done a bit of back tracing and found the block that's generating the error; object.c:150 } else if (type == OBJ_COMMIT) { struct commit *commit = lookup_commit(sha1); parse_commit_buffer(commit, buffer, size); if (!commit->buffer) { commit->buffer = buffer; eaten = 1; } obj = &commit->object; } Now, lookup_commit() is returning NULL because check_commit() is being called with a struct object whose type field is not OBJ_COMMIT. Which it presumably got from lookup_object(). gdb tells me the object returned by lookup_object() is {parsed = 0, used = 0, type = 3, flags = 0, sha1 = "\"\217\200e¹0\022\0165ü\f\025L#t\207«\002ÖJ"} Which seems to be the right hash, 228f8065b930120e35fc0c154c237487ab02d64a. What should I do next? I don't understand why lookup_object() is returning an object with type blob instead of with type commit, when git-cat-file says that same object is a commit. Andy -- Dr Andy Parkins, M Eng (hons), MIET andyparkins@xxxxxxxxx - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html