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

[PATCH v3 01/20] diff: use hashmap_entry_init on moved_entry.ent

From
EWEric Wong <e@80x24.org>
Date
Oct 6, 2019, 23:30 UTC
Message-ID
<20191006233043.3516-2-e@80x24.org>
In-Reply-To
<20191006233043.3516-1-e@80x24.org>

Otherwise, the hashmap_entry.next field appears to remain uninitialized, which can lead to problems when add_lines_to_move_detection calls hashmap_add.

I found this through manual inspection when converting hashmap_add callers to take "struct hashmap_entry *".

Signed-off-by: Eric Wong <e@80x24.org>
Reviewed-by: Derrick Stolee <stolee@gmail.com>
---
 diff.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/diff.c b/diff.c
index efe42b341a..02491ee684 100644
--- a/diff.c
+++ b/diff.c
@@ -964,8 +964,9 @@ static struct moved_entry *prepare_entry(struct diff_options *o,
 	struct moved_entry *ret = xmalloc(sizeof(*ret));
 	struct emitted_diff_symbol *l = &o->emitted_symbols->buf[line_no];
 	unsigned flags = o->color_moved_ws_handling & XDF_WHITESPACE_FLAGS;
+	unsigned int hash = xdiff_hash_string(l->line, l->len, flags);
 
-	ret->ent.hash = xdiff_hash_string(l->line, l->len, flags);
+	hashmap_entry_init(&ret->ent, hash);
 	ret->es = l;
 	ret->next_line = NULL;
 
Previous: Eric WongNext: Eric Wong
Message 2 of 30 in “hashmap bug/safety/ease-of-use fixes”
  1. 00/20 hashmap bug/safety/ease-of-use fixesEric Wong, Oct 6, 2019
  2. 01/20 diff: use hashmap_entry_init on moved_entry.entEric Wong, Oct 6, 2019
  3. 02/20 coccicheck: detect hashmap_entry.hash assignmentEric Wong, Oct 6, 2019
  4. 04/20 hashmap_entry_init takes "struct hashmap_entry *"Eric Wong, Oct 6, 2019
  5. 03/20 packfile: use hashmap_entry in delta_base_cache_entryEric Wong, Oct 6, 2019
  6. 05/20 hashmap_get_next takes "const struct hashmap_entry *"Eric Wong, Oct 6, 2019
  7. 06/20 hashmap_add takes "struct hashmap_entry *"Eric Wong, Oct 6, 2019
  8. 07/20 hashmap_get takes "const struct hashmap_entry *"Eric Wong, Oct 6, 2019
  9. 08/20 hashmap_remove takes "const struct hashmap_entry *"Eric Wong, Oct 6, 2019
  10. 09/20 hashmap_put takes "struct hashmap_entry *"Eric Wong, Oct 6, 2019
  11. 10/20 introduce container_of macroEric Wong, Oct 6, 2019
  12. 11/20 hashmap_get_next returns "struct hashmap_entry *"Eric Wong, Oct 6, 2019
  13. 12/20 hashmap: use *_entry APIs to wrap container_ofEric Wong, Oct 6, 2019
  14. 13/20 hashmap_get{,_from_hash} return "struct hashmap_entry *"Eric Wong, Oct 6, 2019
  15. 14/20 hashmap_cmp_fn takes hashmap_entry paramsEric Wong, Oct 6, 2019
  16. 15/20 hashmap: use *_entry APIs for iterationEric Wong, Oct 6, 2019
  17. 16/20 hashmap: hashmap_{put,remove} return hashmap_entry *Eric Wong, Oct 6, 2019
  18. 17/20 hashmap: introduce hashmap_free_entriesEric Wong, Oct 6, 2019
  19. 18/20 OFFSETOF_VAR macro to simplify hashmap iteratorsEric Wong, Oct 6, 2019
  20. 19/20 hashmap: remove type arg from hashmap_{get,put,remove}_entryEric Wong, Oct 6, 2019
  21. 20/20 hashmap_entry: remove first member requirement from docsEric Wong, Oct 6, 2019
  22. Junio C HamanoOct 7, 2019
  23. 21/20 convert: drop invalid comment for subprocess_entryEric Wong, Oct 7, 2019
  24. Junio C HamanoOct 8, 2019
  25. Eric WongOct 8, 2019
  26. Junio C HamanoOct 7, 2019
  27. Johannes SchindelinOct 8, 2019
  28. Derrick StoleeOct 8, 2019
  29. Derrick StoleeOct 8, 2019
  30. Junio C HamanoOct 9, 2019

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.