Commit 1c3d7f2a authored by Peter Griess's avatar Peter Griess

Fix broken clause11_21_4_6_6 test in Apple Clang.

Summary:
- Prior to this fix, the test relied upon begin() being evaluated after
the fbstring constructor (even thoug the order of evaluation of
function arguments is un-defined). When this assumption was violated,
begin() ended up with an iterator that was invalid since it points to
data internal to fbstring, and the fbstring copy constructor can end
up triggering re-allocation in the source.

Test Plan:
- fbconfig -r folly && fbmake runtests
- ./configure && make check on Ubuntu/FC/Mac

Reviewed By: andrei.alexandrescu@fb.com

FB internal diff: D1014093
parent ea10c904
......@@ -526,10 +526,11 @@ template <class String> void clause11_21_4_6_6(String & test) {
random(0, maxString), random('a', 'z'));
pos = random(0, test.size());
if (avoidAliasing) {
auto newString = String(test);
test.replace(
test.begin() + pos,
test.begin() + pos + random(0, test.size() - pos),
String(test));
newString);
} else {
test.replace(
test.begin() + pos,
......@@ -538,10 +539,11 @@ template <class String> void clause11_21_4_6_6(String & test) {
}
pos = random(0, test.size());
if (avoidAliasing) {
auto newString = String(test);
test.replace(
test.begin() + pos,
test.begin() + pos + random(0, test.size() - pos),
String(test).c_str(),
newString.c_str(),
test.size() - random(0, test.size()));
} else {
test.replace(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment