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

Side by Side Diff: WebCore/dom/Text.cpp

Issue 3599013: Merge 68705 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/517/
Patch Set: Created 10 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 | « no previous file | 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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 4 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 const Text* startText = earliestLogicallyAdjacentTextNode(this); 116 const Text* startText = earliestLogicallyAdjacentTextNode(this);
117 const Text* endText = latestLogicallyAdjacentTextNode(this); 117 const Text* endText = latestLogicallyAdjacentTextNode(this);
118 118
119 Node* onePastEndText = endText->nextSibling(); 119 Node* onePastEndText = endText->nextSibling();
120 unsigned resultLength = 0; 120 unsigned resultLength = 0;
121 for (const Node* n = startText; n != onePastEndText; n = n->nextSibling()) { 121 for (const Node* n = startText; n != onePastEndText; n = n->nextSibling()) {
122 if (!n->isTextNode()) 122 if (!n->isTextNode())
123 continue; 123 continue;
124 const Text* t = static_cast<const Text*>(n); 124 const Text* t = static_cast<const Text*>(n);
125 const String& data = t->data(); 125 const String& data = t->data();
126 if (std::numeric_limits<unsigned>::max() - data.length() < resultLength)
127 CRASH();
126 resultLength += data.length(); 128 resultLength += data.length();
127 } 129 }
128 UChar* resultData; 130 UChar* resultData;
129 String result = String::createUninitialized(resultLength, resultData); 131 String result = String::createUninitialized(resultLength, resultData);
130 UChar* p = resultData; 132 UChar* p = resultData;
131 for (const Node* n = startText; n != onePastEndText; n = n->nextSibling()) { 133 for (const Node* n = startText; n != onePastEndText; n = n->nextSibling()) {
132 if (!n->isTextNode()) 134 if (!n->isTextNode())
133 continue; 135 continue;
134 const Text* t = static_cast<const Text*>(n); 136 const Text* t = static_cast<const Text*>(n);
135 const String& data = t->data(); 137 const String& data = t->data();
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 result += "; "; 349 result += "; ";
348 result += "value="; 350 result += "value=";
349 result += s; 351 result += s;
350 } 352 }
351 353
352 strncpy(buffer, result.utf8().data(), length - 1); 354 strncpy(buffer, result.utf8().data(), length - 1);
353 } 355 }
354 #endif 356 #endif
355 357
356 } // namespace WebCore 358 } // namespace WebCore
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698