Skip to content

Commit 62f6eca

Browse files
committed
unit-tests: avoid gcov memmove timeout
1 parent e5a42e3 commit 62f6eca

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

src/string.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,14 @@ void *memmove(void *dst, const void *src, size_t n)
294294
if (src < dst) {
295295
const char *s = (const char *)src;
296296
char *d = (char *)dst;
297+
if (((size_t)dst & (sizeof(unsigned long)-1)) == 0 &&
298+
((size_t)src & (sizeof(unsigned long)-1)) == 0)
299+
{
300+
while (n >= sizeof(unsigned long)) {
301+
n -= sizeof(unsigned long);
302+
*(unsigned long*)(d + n) = *(const unsigned long*)(s + n);
303+
}
304+
}
297305
for (i = n; i > 0; i--) {
298306
d[i - 1] = s[i - 1];
299307
}

tools/unit-tests/unit-string.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ START_TEST(test_memcpy_memmove)
329329
}
330330
END_TEST
331331

332-
#if defined(__linux__) && (SIZE_MAX > INT_MAX)
332+
#if defined(__linux__) && (SIZE_MAX > INT_MAX) && !defined(__GCOV__)
333333
START_TEST(test_memmove_large_overlap_length)
334334
{
335335
size_t n = (size_t)INT_MAX + 2U;

0 commit comments

Comments
 (0)