git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/6] replace_object: use struct members instead of an array

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 21, 2014, 18:23 UTC
Message-ID
<xmqqeh2w495f.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1393000327-11402-3-git-send-email-mhagger@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
> Give the poor humans some names to help them make sense of things.
>
> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
> ---
Good.
Reviewed-by: me.
Show 66 quoted lines
>  replace_object.c | 17 +++++++++++------
>  1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/replace_object.c b/replace_object.c
> index cdcaf8c..6fc3ff4 100644
> --- a/replace_object.c
> +++ b/replace_object.c
> @@ -3,8 +3,13 @@
>  #include "refs.h"
>  #include "commit.h"
>  
> +/*
> + * An array of replacements.  The array is kept sorted by the original
> + * sha1.
> + */
>  static struct replace_object {
> -	unsigned char sha1[2][20];
> +	unsigned char original[20];
> +	unsigned char replacement[20];
>  } **replace_object;
>  
>  static int replace_object_alloc, replace_object_nr;
> @@ -12,7 +17,7 @@ static int replace_object_alloc, replace_object_nr;
>  static const unsigned char *replace_sha1_access(size_t index, void *table)
>  {
>  	struct replace_object **replace = table;
> -	return replace[index]->sha1[0];
> +	return replace[index]->original;
>  }
>  
>  static int replace_object_pos(const unsigned char *sha1)
> @@ -24,7 +29,7 @@ static int replace_object_pos(const unsigned char *sha1)
>  static int register_replace_object(struct replace_object *replace,
>  				   int ignore_dups)
>  {
> -	int pos = replace_object_pos(replace->sha1[0]);
> +	int pos = replace_object_pos(replace->original);
>  
>  	if (0 <= pos) {
>  		if (ignore_dups)
> @@ -60,14 +65,14 @@ static int register_replace_ref(const char *refname,
>  	const char *hash = slash ? slash + 1 : refname;
>  	struct replace_object *repl_obj = xmalloc(sizeof(*repl_obj));
>  
> -	if (strlen(hash) != 40 || get_sha1_hex(hash, repl_obj->sha1[0])) {
> +	if (strlen(hash) != 40 || get_sha1_hex(hash, repl_obj->original)) {
>  		free(repl_obj);
>  		warning("bad replace ref name: %s", refname);
>  		return 0;
>  	}
>  
>  	/* Copy sha1 from the read ref */
> -	hashcpy(repl_obj->sha1[1], sha1);
> +	hashcpy(repl_obj->replacement, sha1);
>  
>  	/* Register new object */
>  	if (register_replace_object(repl_obj, 1))
> @@ -107,7 +112,7 @@ const unsigned char *do_lookup_replace_object(const unsigned char *sha1)
>  
>  		pos = replace_object_pos(cur);
>  		if (0 <= pos)
> -			cur = replace_object[pos]->sha1[1];
> +			cur = replace_object[pos]->replacement;
>  	} while (0 <= pos);
>  
>  	return cur;
Previous: Michael HaggertyNext: Michael Haggerty
Message 9 of 23 in “Add a bunch of docstrings and make a few minor cleanups”
  1. 0/6 Add a bunch of docstrings and make a few minor cleanupsMichael Haggerty, Feb 21, 2014
  2. 1/6 Add docstrings for lookup_replace_object() and do_lookup_replace_object()Michael Haggerty, Feb 21, 2014
  3. Junio C HamanoFeb 21, 2014
  4. Michael HaggertyFeb 24, 2014
  5. Christian CouderFeb 24, 2014
  6. Michael HaggertyFeb 24, 2014
  7. Junio C HamanoFeb 24, 2014
  8. 2/6 replace_object: use struct members instead of an arrayMichael Haggerty, Feb 21, 2014
  9. Junio C HamanoFeb 21, 2014
  10. 3/6 find_pack_entry(): document last_found_packMichael Haggerty, Feb 21, 2014
  11. Nicolas PitreFeb 21, 2014
  12. 4/6 sha1_file_name(): declare to return a const stringMichael Haggerty, Feb 21, 2014
  13. 5/6 Document a bunch of functions defined in sha1_file.cMichael Haggerty, Feb 21, 2014
  14. Nicolas PitreFeb 21, 2014
  15. Jakub NarębskiFeb 24, 2014
  16. Michael HaggertyFeb 24, 2014
  17. Jonathan NiederFeb 24, 2014
  18. Michael HaggertyFeb 25, 2014
  19. 6/6 Document some functions defined in object.cMichael Haggerty, Feb 21, 2014
  20. Nicolas PitreFeb 21, 2014
  21. Michael HaggertyFeb 24, 2014
  22. Junio C HamanoFeb 24, 2014
  23. Junio C HamanoFeb 24, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.