| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |