{"thread":{"id":"23628","subject":"[PATCH] xdiff/xmerge.c: use memset() instead of explicit for-loop","startedAt":"2010-04-28T11:29:06Z","lastAt":"2010-04-28T11:29:06Z","messageCount":1,"participants":["Alexey Mahotkin"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"140584","messageId":"1272454146-5519-1-git-send-email-squadette@gmail.com","threadId":"23628","inReplyTo":null,"subject":"[PATCH] xdiff/xmerge.c: use memset() instead of explicit for-loop","fromName":"Alexey Mahotkin","fromEmail":"squadette@gmail.com","sentAt":"2010-04-28T11:29:06Z","receivedAt":"2010-04-28T11:29:06Z","isPatch":true,"sender":{"key":"squadette@gmail.com","avatar":"https://avatars.githubusercontent.com/u/3052?v=4"},"body":"memset() is heavily optimized, and resulting assembler code\nis about 150 lines less for that file.\n\nSigned-off-by: Alexey Mahotkin <squadette@gmail.com>\n---\n xdiff/xmerge.c |   17 ++++++++---------\n 1 files changed, 8 insertions(+), 9 deletions(-)\n\ndiff --git a/xdiff/xmerge.c b/xdiff/xmerge.c\nindex 16dd9ac..6d6fc1b 100644\n--- a/xdiff/xmerge.c\n+++ b/xdiff/xmerge.c\n@@ -152,7 +152,6 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,\n \tint marker1_size = (name1 ? strlen(name1) + 1 : 0);\n \tint marker2_size = (name2 ? strlen(name2) + 1 : 0);\n \tint marker3_size = (name3 ? strlen(name3) + 1 : 0);\n-\tint j;\n \n \tif (marker_size <= 0)\n \t\tmarker_size = DEFAULT_CONFLICT_MARKER_SIZE;\n@@ -164,8 +163,8 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,\n \tif (!dest) {\n \t\tsize += marker_size + 1 + marker1_size;\n \t} else {\n-\t\tfor (j = 0; j < marker_size; j++)\n-\t\t\tdest[size++] = '<';\n+\t\tmemset(dest + size, '<', marker_size);\n+\t\tsize += marker_size;\n \t\tif (marker1_size) {\n \t\t\tdest[size] = ' ';\n \t\t\tmemcpy(dest + size + 1, name1, marker1_size - 1);\n@@ -183,8 +182,8 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,\n \t\tif (!dest) {\n \t\t\tsize += marker_size + 1 + marker3_size;\n \t\t} else {\n-\t\t\tfor (j = 0; j < marker_size; j++)\n-\t\t\t\tdest[size++] = '|';\n+\t\t\tmemset(dest + size, '|', marker_size);\n+\t\t\tsize += marker_size;\n \t\t\tif (marker3_size) {\n \t\t\t\tdest[size] = ' ';\n \t\t\t\tmemcpy(dest + size + 1, name3, marker3_size - 1);\n@@ -199,8 +198,8 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,\n \tif (!dest) {\n \t\tsize += marker_size + 1;\n \t} else {\n-\t\tfor (j = 0; j < marker_size; j++)\n-\t\t\tdest[size++] = '=';\n+\t\tmemset(dest + size, '=', marker_size);\n+\t\tsize += marker_size;\n \t\tdest[size++] = '\\n';\n \t}\n \n@@ -210,8 +209,8 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1,\n \tif (!dest) {\n \t\tsize += marker_size + 1 + marker2_size;\n \t} else {\n-\t\tfor (j = 0; j < marker_size; j++)\n-\t\t\tdest[size++] = '>';\n+\t\tmemset(dest + size, '>', marker_size);\n+\t\tsize += marker_size;\n \t\tif (marker2_size) {\n \t\t\tdest[size] = ' ';\n \t\t\tmemcpy(dest + size + 1, name2, marker2_size - 1);\n-- \n1.6.2.5\n"}]}