Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Side by Side Diff: third_party/WebKit/Source/core/layout/line/InlineBox.cpp

Issue 2170583003: Try to fix crash because of InlineBox deletion in a cached subsequence (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: - Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/core/layout/api/LineLayoutItem.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 60
61 #endif 61 #endif
62 62
63 void InlineBox::destroy() 63 void InlineBox::destroy()
64 { 64 {
65 // We do not need to issue invalidations if the page is being destroyed 65 // We do not need to issue invalidations if the page is being destroyed
66 // since these objects will never be repainted. 66 // since these objects will never be repainted.
67 if (!m_lineLayoutItem.documentBeingDestroyed()) { 67 if (!m_lineLayoutItem.documentBeingDestroyed()) {
68 setLineLayoutItemShouldDoFullPaintInvalidationIfNeeded(); 68 setLineLayoutItemShouldDoFullPaintInvalidationIfNeeded();
69 69
70 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS 70 // TODO(crbug.com/619630): Make this fast.
71 // This object may have display items in a cached subsequence, but we ar e 71 m_lineLayoutItem.slowSetPaintingLayerNeedsRepaint();
72 // sure that the subsequence will be invalidated because m_lineLayoutIte m has
73 // been setShouldFullPaintInvalidation(), so deletion of this object is safe.
74 endShouldKeepAlive();
75 #endif
76 } 72 }
77 73
78 delete this; 74 delete this;
79 } 75 }
80 76
81 void InlineBox::remove(MarkLineBoxes markLineBoxes) 77 void InlineBox::remove(MarkLineBoxes markLineBoxes)
82 { 78 {
83 if (parent()) 79 if (parent())
84 parent()->removeChild(this, markLineBoxes); 80 parent()->removeChild(this, markLineBoxes);
85 } 81 }
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 419
424 void showLineTree(const blink::InlineBox* b) 420 void showLineTree(const blink::InlineBox* b)
425 { 421 {
426 if (b) 422 if (b)
427 b->showLineTreeForThis(); 423 b->showLineTreeForThis();
428 else 424 else
429 fprintf(stderr, "Cannot showLineTree for (nil) InlineBox.\n"); 425 fprintf(stderr, "Cannot showLineTree for (nil) InlineBox.\n");
430 } 426 }
431 427
432 #endif 428 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/api/LineLayoutItem.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698