| Index: Source/WebCore/rendering/RenderBlock.cpp
|
| ===================================================================
|
| --- Source/WebCore/rendering/RenderBlock.cpp (revision 139389)
|
| +++ Source/WebCore/rendering/RenderBlock.cpp (working copy)
|
| @@ -1290,8 +1290,8 @@
|
|
|
| void RenderBlock::startDelayUpdateScrollInfo()
|
| {
|
| - if (!gDelayedUpdateScrollInfoSet) {
|
| - ASSERT(!gDelayUpdateScrollInfo);
|
| + if (gDelayUpdateScrollInfo == 0) {
|
| + ASSERT(!gDelayedUpdateScrollInfoSet);
|
| gDelayedUpdateScrollInfoSet = new DelayedUpdateScrollInfoSet;
|
| }
|
| ASSERT(gDelayedUpdateScrollInfoSet);
|
| @@ -1305,22 +1305,15 @@
|
| if (gDelayUpdateScrollInfo == 0) {
|
| ASSERT(gDelayedUpdateScrollInfoSet);
|
|
|
| - Vector<RenderBlock*> infoSet;
|
| - while (gDelayedUpdateScrollInfoSet && gDelayedUpdateScrollInfoSet->size()) {
|
| - copyToVector(*gDelayedUpdateScrollInfoSet, infoSet);
|
| - for (Vector<RenderBlock*>::iterator it = infoSet.begin(); it != infoSet.end(); ++it) {
|
| - RenderBlock* block = *it;
|
| - // |block| may have been destroyed at this point, but then it will have been removed from gDelayedUpdateScrollInfoSet.
|
| - if (gDelayedUpdateScrollInfoSet && gDelayedUpdateScrollInfoSet->contains(block)) {
|
| - gDelayedUpdateScrollInfoSet->remove(block);
|
| - if (block->hasOverflowClip())
|
| - block->layer()->updateScrollInfoAfterLayout();
|
| - }
|
| + OwnPtr<DelayedUpdateScrollInfoSet> infoSet(adoptPtr(gDelayedUpdateScrollInfoSet));
|
| + gDelayedUpdateScrollInfoSet = 0;
|
| +
|
| + for (DelayedUpdateScrollInfoSet::iterator it = infoSet->begin(); it != infoSet->end(); ++it) {
|
| + RenderBlock* block = *it;
|
| + if (block->hasOverflowClip()) {
|
| + block->layer()->updateScrollInfoAfterLayout();
|
| }
|
| }
|
| - delete gDelayedUpdateScrollInfoSet;
|
| - gDelayedUpdateScrollInfoSet = 0;
|
| - ASSERT(!gDelayUpdateScrollInfo);
|
| }
|
| }
|
|
|
|
|