public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox•com>
To: Kirill Smelkov <kirr@mns•spb.ru>
Cc: git@vger•kernel.org
Subject: Re: [PATCH 7/8] combine-diff: Fast changed-to-all-parents paths scanning
Date: Wed, 05 Feb 2014 09:36:55 -0800	[thread overview]
Message-ID: <xmqqfvnx5umg.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <20140205165119.GA18558@tugrik.mns.mnsspb.ru> (Kirill Smelkov's message of "Wed, 5 Feb 2014 20:51:19 +0400")

Kirill Smelkov <kirr@mns•spb.ru> writes:

> Only, before I clean things up, I'd like to ask - would the following
> patch be accepted
>
> ---- 8< ---
> diff --git a/tree-walk.c b/tree-walk.c
> index 79dba1d..4dc86c7 100644
> --- a/tree-walk.c
> +++ b/tree-walk.c
> @@ -37,7 +37,7 @@ static void decode_tree_entry(struct tree_desc *desc, const char *buf, unsigned
>  
>  	/* Initialize the descriptor entry */
>  	desc->entry.path = path;
> -	desc->entry.mode = mode;
> +	desc->entry.mode = canon_mode(mode);
>  	desc->entry.sha1 = (const unsigned char *)(path + len);
>  }
>  
> diff --git a/tree-walk.h b/tree-walk.h
> index ae04b64..ae7fb3a 100644
> --- a/tree-walk.h
> +++ b/tree-walk.h
> @@ -16,7 +16,7 @@ struct tree_desc {
>  static inline const unsigned char *tree_entry_extract(struct tree_desc *desc, const char **pathp, unsigned int *modep)
>  {
>  	*pathp = desc->entry.path;
> -	*modep = canon_mode(desc->entry.mode);
> +	*modep = desc->entry.mode;
>  	return desc->entry.sha1;
>  }
> ---- 8< ---
>  
> ?

Doesn't desc point into and walks over the data we read from the
tree object directly?

We try to keep (tree|commit)->buffer intact and that is done pretty
deliberately.  While you are walking a tree or parsing a commit,
somebody else, perhaps called indirectly by a helper function you
call, may call lookup_object() for the same object, get the copy
that has already been read and start using it.  This kind of change
will introduce bugs that are hard to debug unless it is done very
carefully (e.g. starting from making tree.buffer into a const pointer
and propagating constness throughout the system), which might not be
worth the pain.

  reply	other threads:[~2014-02-05 17:37 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-03 12:47 [PATCH 0/8] `log -c` speedup (part 2) Kirill Smelkov
2014-02-03 12:47 ` [PATCH 1/8] fixup! combine_diff: simplify intersect_paths() further Kirill Smelkov
2014-02-03 19:40   ` Junio C Hamano
2014-02-03 12:47 ` [PATCH 2/8] tests: add checking that combine-diff emits only correct paths Kirill Smelkov
2014-02-03 23:10   ` Junio C Hamano
2014-02-05 10:36     ` Kirill Smelkov
2014-02-03 12:47 ` [PATCH 3/8] tree-diff: no need to manually verify that there is no mode change for a path Kirill Smelkov
2014-02-03 23:12   ` Junio C Hamano
2014-02-03 12:47 ` [PATCH 4/8] tree-diff: no need to pass match to skip_uninteresting() Kirill Smelkov
2014-02-03 12:47 ` [PATCH 5/8] combine-diff: move show_log_first logic/action out of paths scanning Kirill Smelkov
2014-02-03 23:21   ` Junio C Hamano
2014-02-03 12:47 ` [PATCH 6/8] combine-diff: Move changed-paths scanning logic into its own function Kirill Smelkov
2014-02-03 12:47 ` [PATCH 7/8] combine-diff: Fast changed-to-all-parents paths scanning Kirill Smelkov
2014-02-03 23:26   ` Junio C Hamano
2014-02-03 23:39     ` Junio C Hamano
2014-02-04 16:34       ` Kirill Smelkov
2014-02-04 18:37         ` Junio C Hamano
2014-02-05 16:51           ` Kirill Smelkov
2014-02-05 17:36             ` Junio C Hamano [this message]
2014-02-05 19:14               ` Kirill Smelkov
2014-02-05 19:42                 ` Junio C Hamano
2014-02-05 20:22                   ` Kirill Smelkov
2014-02-05 22:58                     ` Junio C Hamano
2014-02-06 16:22                       ` Kirill Smelkov
2014-02-04  0:00   ` Junio C Hamano
2014-02-03 12:47 ` [PATCH 8/8] combine-diff: bail out early, if num_paths=0 Kirill Smelkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqfvnx5umg.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox$(echo .)com \
    --cc=git@vger$(echo .)kernel.org \
    --cc=kirr@mns$(echo .)spb.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox