aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/lib/qunique.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/include/lib/qunique.h b/src/include/lib/qunique.h
index 73aa10f1659..95d9fef637a 100644
--- a/src/include/lib/qunique.h
+++ b/src/include/lib/qunique.h
@@ -30,8 +30,9 @@ qunique(void *array, size_t elements, size_t width,
for (i = 1, j = 0; i < elements; ++i)
{
- if (compare(bytes + i * width, bytes + j * width) != 0)
- memcpy(bytes + ++j * width, bytes + i * width, width);
+ if (compare(bytes + i * width, bytes + j * width) != 0 &&
+ ++j != i)
+ memcpy(bytes + j * width, bytes + i * width, width);
}
return j + 1;
@@ -55,8 +56,9 @@ qunique_arg(void *array, size_t elements, size_t width,
for (i = 1, j = 0; i < elements; ++i)
{
- if (compare(bytes + i * width, bytes + j * width, arg) != 0)
- memcpy(bytes + ++j * width, bytes + i * width, width);
+ if (compare(bytes + i * width, bytes + j * width, arg) != 0 &&
+ ++j != i)
+ memcpy(bytes + j * width, bytes + i * width, width);
}
return j + 1;