diff --git a/src/taglist.c b/src/taglist.c
index b85d5d616a9af7f55fb8dfc0f4f1c5617f2c9ff3..90608518be31f125534b7ea0b01b25958207f04b 100644
--- a/src/taglist.c
+++ b/src/taglist.c
@@ -123,14 +123,7 @@ void Taggroup_Add (taggroup_t *garray[], const mtag_t tag, size_t id)
 
 		// Offset existing elements to make room for the new one.
 		if (i < group->count)
-		{
-			// Temporary memory block for copying.
-			size_t size = group->count - i;
-			size_t *temp = malloc(size);
-			memcpy(temp, &group->elements[i], size);
-			memcpy(&group->elements[i + 1], temp, size);
-			free(temp);
-		}
+			memmove(&group->elements[i + 1], &group->elements[i], group->count - i);
 	}
 
 	group->count++;