Re: segmentation fault (nullpointer) with git log --submodule -p
- From
Duy Nguyen <pclouds@gmail.com>
- Date
- Jan 24, 2013, 13:40 UTC
- Message-ID
- <CACsJy8B9O=A26_=sv1JEYdtazsWa4khZkqpTgFSSTs_RGGPZqQ@mail.gmail.com>
- In-Reply-To
- <510124F5.9090505@atlas-elektronik.com>
On Thu, Jan 24, 2013 at 7:11 PM, Stefan Näwe <stefan.naewe@atlas-elektronik.com> wrote:
Show 5 quoted lines
>> Does it fail with older versions of git? If so, can you bisect? > > I did. My bisection told me this is the suspect: > > ccdc603 (parse_object: try internal cache before reading object db)
diff --git a/object.c b/object.c index d8d09f9..6b06297 100644 --- a/object.c +++ b/object.c @@ -191,10 +191,15 @@ struct object *parse_object(const unsigned char *sha1) enum object_type type; int eaten; const unsigned char *repl = lookup_replace_object(sha1); - void *buffer = read_sha1_file(sha1, &type, &size); + void *buffer; + struct object *obj; + + obj = lookup_object(sha1); + if (obj && obj->parsed) + return obj; Any chance obj->parsed is 1 but ((struct commit*)obj)->buffer is NULL? What if you change that "if" to if (obj && obj->parsed && (obj->type != OBJ_COMMIT || ((struct commit *)obj)->buffer)) ?? Also you did not encode commits in any specific encoding, nor set i18n.logOutputEncoding?
-- Duy