{"thread":{"id":"28251","subject":"[PATCH] Use memmove in ident_to_git","startedAt":"2011-08-29T20:06:04Z","lastAt":"2011-08-29T20:06:04Z","messageCount":1,"participants":["trast@student.ethz.ch"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"174483","messageId":"c9efd696eb2361246b06008985013ebe68511f8d.1314648121.git.trast@student.ethz.ch","threadId":"28251","inReplyTo":null,"subject":"[PATCH] Use memmove in ident_to_git","fromName":"","fromEmail":"trast@student.ethz.ch","sentAt":"2011-08-29T20:06:04Z","receivedAt":"2011-08-29T20:06:04Z","isPatch":true,"sender":{"key":"tr@thomasrast.ch","avatar":"https://avatars.githubusercontent.com/u/153510?v=4"},"body":"From: Thomas Rast <trast@student.ethz.ch>\n\nconvert_to_git sets src=dst->buf if any of the preceding conversions\nactually did any work.  Thus in ident_to_git we have to use memmove\ninstead of memcpy as far as src->dst copying is concerned.\n\nSigned-off-by: Thomas Rast <trast@student.ethz.ch>\n---\n\nValgrind intermittently detected this for me in t0021, hence the\npatch.  As far as I'm aware it has been broken since the rewrite to\nmemcpy back in 5ecd293 (Rewrite convert_to_{git,working_tree} to use\nstrbuf's., 2007-09-16).  It probably never really mattered as all\ninvolved copies are towards lower addresses (content is only removed)\nand thus a straightforward memcpy operation will do the right thing by\naccident.\n\n convert.c |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/convert.c b/convert.c\nindex 416bf83..3bb5a4d 100644\n--- a/convert.c\n+++ b/convert.c\n@@ -533,7 +533,7 @@ static int ident_to_git(const char *path, const char *src, size_t len,\n \t\tdollar = memchr(src, '$', len);\n \t\tif (!dollar)\n \t\t\tbreak;\n-\t\tmemcpy(dst, src, dollar + 1 - src);\n+\t\tmemmove(dst, src, dollar + 1 - src);\n \t\tdst += dollar + 1 - src;\n \t\tlen -= dollar + 1 - src;\n \t\tsrc  = dollar + 1;\n@@ -553,7 +553,7 @@ static int ident_to_git(const char *path, const char *src, size_t len,\n \t\t\tsrc  = dollar + 1;\n \t\t}\n \t}\n-\tmemcpy(dst, src, len);\n+\tmemmove(dst, src, len);\n \tstrbuf_setlen(buf, dst + len - buf->buf);\n \treturn 1;\n }\n-- \n1.7.7.rc0.370.gdcae57\n"}]}