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

Side by Side Diff: Source/WebCore/svg/SVGUseElement.cpp

Issue 8038032: Merge 94905 - Source/WebCore: Crash due to bad data in SVGDocumentExtensions m_pendingResources (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/835/
Patch Set: Created 9 years, 2 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 | « Source/WebCore/svg/SVGStyledElement.cpp ('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) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org> 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org>
3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005, 2006, 2007 Rob Buis <buis@kde.org>
4 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved. 4 * Copyright (C) Research In Motion Limited 2009-2010. All rights reserved.
5 * Copyright (C) 2011 Torch Mobile (Beijing) Co. Ltd. All rights reserved. 5 * Copyright (C) 2011 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 return; 213 return;
214 214
215 if (SVGURIReference::isKnownAttribute(attrName)) { 215 if (SVGURIReference::isKnownAttribute(attrName)) {
216 if (hasPendingResources()) { 216 if (hasPendingResources()) {
217 OwnPtr<SVGDocumentExtensions::SVGPendingElements> clients(document() ->accessSVGExtensions()->removePendingResource(m_resourceId)); 217 OwnPtr<SVGDocumentExtensions::SVGPendingElements> clients(document() ->accessSVGExtensions()->removePendingResource(m_resourceId));
218 ASSERT(!clients->isEmpty()); 218 ASSERT(!clients->isEmpty());
219 219
220 const SVGDocumentExtensions::SVGPendingElements::const_iterator end = clients->end(); 220 const SVGDocumentExtensions::SVGPendingElements::const_iterator end = clients->end();
221 for (SVGDocumentExtensions::SVGPendingElements::const_iterator it = clients->begin(); it != end; ++it) { 221 for (SVGDocumentExtensions::SVGPendingElements::const_iterator it = clients->begin(); it != end; ++it) {
222 ASSERT((*it)->hasPendingResources()); 222 ASSERT((*it)->hasPendingResources());
223 (*it)->setHasPendingResources(false); 223 (*it)->clearHasPendingResourcesIfPossible();
224 } 224 }
225 225
226 m_resourceId = String(); 226 m_resourceId = String();
227 setHasPendingResources(false); 227 clearHasPendingResourcesIfPossible();
228 } 228 }
229 229
230 m_targetElementInstance = 0; 230 m_targetElementInstance = 0;
231 invalidateShadowTree(); 231 invalidateShadowTree();
232 return; 232 return;
233 } 233 }
234 234
235 if (isXYAttribute) { 235 if (isXYAttribute) {
236 updateContainerOffsets(); 236 updateContainerOffsets();
237 return; 237 return;
(...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after
1108 SVGElement* element = m_targetElementInstance->correspondingElement(); 1108 SVGElement* element = m_targetElementInstance->correspondingElement();
1109 if (!element || !element->isStyled()) 1109 if (!element || !element->isStyled())
1110 return false; 1110 return false;
1111 1111
1112 return static_cast<SVGStyledElement*>(element)->hasRelativeLengths(); 1112 return static_cast<SVGStyledElement*>(element)->hasRelativeLengths();
1113 } 1113 }
1114 1114
1115 } 1115 }
1116 1116
1117 #endif // ENABLE(SVG) 1117 #endif // ENABLE(SVG)
OLDNEW
« no previous file with comments | « Source/WebCore/svg/SVGStyledElement.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698