Cast away -Wclass-memaccess warnings in QVarLengthArray methods
With g++ 8.2.0, I get warnings when a QVarLengthArray<QString> calls remove() or prepend(), as some tests in tst_QVarLengthArray do, as they call memmove() "writing to an object of type ‘class QString’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead"; which may indeed be a good argument for not using QVarLengthArray<QString>, but its own tests do. Change-Id: I4f8a64948b32a54e67a285df4ec7788f60739ffb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
54d062160d
commit
4932cef5b8
@ -490,7 +490,7 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
T *b = ptr + offset;
|
T *b = ptr + offset;
|
||||||
memmove(b + 1, b, (s - offset) * sizeof(T));
|
memmove(static_cast<void *>(b + 1), static_cast<const void *>(b), (s - offset) * sizeof(T));
|
||||||
new (b) T(std::move(t));
|
new (b) T(std::move(t));
|
||||||
}
|
}
|
||||||
s += 1;
|
s += 1;
|
||||||
@ -518,7 +518,7 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA
|
|||||||
} else {
|
} else {
|
||||||
T *b = ptr + offset;
|
T *b = ptr + offset;
|
||||||
T *i = b + n;
|
T *i = b + n;
|
||||||
memmove(i, b, (s - offset - n) * sizeof(T));
|
memmove(static_cast<void *>(i), static_cast<const void *>(b), (s - offset - n) * sizeof(T));
|
||||||
while (i != b)
|
while (i != b)
|
||||||
new (--i) T(copy);
|
new (--i) T(copy);
|
||||||
}
|
}
|
||||||
@ -544,7 +544,7 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA
|
|||||||
i->~T();
|
i->~T();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
memmove(ptr + f, ptr + l, (s - l) * sizeof(T));
|
memmove(static_cast<void *>(ptr + f), static_cast<const void *>(ptr + l), (s - l) * sizeof(T));
|
||||||
}
|
}
|
||||||
s -= n;
|
s -= n;
|
||||||
return ptr + f;
|
return ptr + f;
|
||||||
|
Loading…
Reference in New Issue
Block a user