Follow forwarding pointers for end before addWriteRange
This commit is contained in:
@@ -3129,13 +3129,13 @@ AddedWriteRange addWriteRange(Node *beginRoot, TrivialSpan begin, Node *endRoot,
|
||||
beginNode->entry.rangeVersion =
|
||||
p == nullptr ? writeContext->zero
|
||||
: std::max(p->entry.rangeVersion, writeContext->zero);
|
||||
while (endRoot->releaseDeferred) {
|
||||
endRoot = endRoot->forwardTo;
|
||||
}
|
||||
beginNode->entryPresent = true;
|
||||
}
|
||||
beginNode->entry.pointVersion = writeVersion;
|
||||
|
||||
while (endRoot->releaseDeferred) {
|
||||
endRoot = endRoot->forwardTo;
|
||||
}
|
||||
Node *endNode =
|
||||
*insert(&getInTree(endRoot, impl), end, writeVersion, writeContext);
|
||||
|
||||
@@ -4915,6 +4915,10 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
||||
context.results[i].remaining, writeVersion,
|
||||
&writeContext);
|
||||
} else {
|
||||
while (context.results[i].endInsertionPoint->releaseDeferred) {
|
||||
context.results[i].endInsertionPoint =
|
||||
context.results[i].endInsertionPoint->forwardTo;
|
||||
}
|
||||
auto [beginNode, endNode] = addWriteRange(
|
||||
context.results[i].insertionPoint, context.results[i].remaining,
|
||||
context.results[i].endInsertionPoint,
|
||||
|
Reference in New Issue
Block a user