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

Side by Side Diff: third_party/WebKit/Source/wtf/text/TextCodecUTF8.cpp

Issue 2585673002: Replace ASSERT, ENABLE(ASSERT), and ASSERT_NOT_REACHED in wtf (Closed)
Patch Set: Fix an Asan issue with LinkedHashSetNodeBase::unlink Created 4 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2006, 2008, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2006, 2008, 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 84 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
85 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
86 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 86 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
87 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 87 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
88 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 88 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
89 return lengths[firstByte]; 89 return lengths[firstByte];
90 } 90 }
91 91
92 static inline int decodeNonASCIISequence(const uint8_t* sequence, 92 static inline int decodeNonASCIISequence(const uint8_t* sequence,
93 unsigned length) { 93 unsigned length) {
94 ASSERT(!isASCII(sequence[0])); 94 DCHECK(!isASCII(sequence[0]));
95 if (length == 2) { 95 if (length == 2) {
96 ASSERT(sequence[0] <= 0xDF); 96 DCHECK_LE(sequence[0], 0xDF);
97 if (sequence[0] < 0xC2) 97 if (sequence[0] < 0xC2)
98 return nonCharacter1; 98 return nonCharacter1;
99 if (sequence[1] < 0x80 || sequence[1] > 0xBF) 99 if (sequence[1] < 0x80 || sequence[1] > 0xBF)
100 return nonCharacter1; 100 return nonCharacter1;
101 return ((sequence[0] << 6) + sequence[1]) - 0x00003080; 101 return ((sequence[0] << 6) + sequence[1]) - 0x00003080;
102 } 102 }
103 if (length == 3) { 103 if (length == 3) {
104 ASSERT(sequence[0] >= 0xE0 && sequence[0] <= 0xEF); 104 DCHECK_GE(sequence[0], 0xE0);
105 DCHECK_LE(sequence[0], 0xEF);
105 switch (sequence[0]) { 106 switch (sequence[0]) {
106 case 0xE0: 107 case 0xE0:
107 if (sequence[1] < 0xA0 || sequence[1] > 0xBF) 108 if (sequence[1] < 0xA0 || sequence[1] > 0xBF)
108 return nonCharacter1; 109 return nonCharacter1;
109 break; 110 break;
110 case 0xED: 111 case 0xED:
111 if (sequence[1] < 0x80 || sequence[1] > 0x9F) 112 if (sequence[1] < 0x80 || sequence[1] > 0x9F)
112 return nonCharacter1; 113 return nonCharacter1;
113 break; 114 break;
114 default: 115 default:
115 if (sequence[1] < 0x80 || sequence[1] > 0xBF) 116 if (sequence[1] < 0x80 || sequence[1] > 0xBF)
116 return nonCharacter1; 117 return nonCharacter1;
117 } 118 }
118 if (sequence[2] < 0x80 || sequence[2] > 0xBF) 119 if (sequence[2] < 0x80 || sequence[2] > 0xBF)
119 return nonCharacter2; 120 return nonCharacter2;
120 return ((sequence[0] << 12) + (sequence[1] << 6) + sequence[2]) - 121 return ((sequence[0] << 12) + (sequence[1] << 6) + sequence[2]) -
121 0x000E2080; 122 0x000E2080;
122 } 123 }
123 ASSERT(length == 4); 124 DCHECK_EQ(length, 4u);
124 ASSERT(sequence[0] >= 0xF0 && sequence[0] <= 0xF4); 125 DCHECK_GE(sequence[0], 0xF0);
126 DCHECK_LE(sequence[0], 0xF4);
125 switch (sequence[0]) { 127 switch (sequence[0]) {
126 case 0xF0: 128 case 0xF0:
127 if (sequence[1] < 0x90 || sequence[1] > 0xBF) 129 if (sequence[1] < 0x90 || sequence[1] > 0xBF)
128 return nonCharacter1; 130 return nonCharacter1;
129 break; 131 break;
130 case 0xF4: 132 case 0xF4:
131 if (sequence[1] < 0x80 || sequence[1] > 0x8F) 133 if (sequence[1] < 0x80 || sequence[1] > 0x8F)
132 return nonCharacter1; 134 return nonCharacter1;
133 break; 135 break;
134 default: 136 default:
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 consumePartialSequenceByte(); 174 consumePartialSequenceByte();
173 } 175 }
174 176
175 template <> 177 template <>
176 bool TextCodecUTF8::handlePartialSequence<LChar>(LChar*& destination, 178 bool TextCodecUTF8::handlePartialSequence<LChar>(LChar*& destination,
177 const uint8_t*& source, 179 const uint8_t*& source,
178 const uint8_t* end, 180 const uint8_t* end,
179 bool flush, 181 bool flush,
180 bool, 182 bool,
181 bool&) { 183 bool&) {
182 ASSERT(m_partialSequenceSize); 184 DCHECK(m_partialSequenceSize);
183 do { 185 do {
184 if (isASCII(m_partialSequence[0])) { 186 if (isASCII(m_partialSequence[0])) {
185 *destination++ = m_partialSequence[0]; 187 *destination++ = m_partialSequence[0];
186 consumePartialSequenceByte(); 188 consumePartialSequenceByte();
187 continue; 189 continue;
188 } 190 }
189 int count = nonASCIISequenceLength(m_partialSequence[0]); 191 int count = nonASCIISequenceLength(m_partialSequence[0]);
190 if (!count) 192 if (!count)
191 return true; 193 return true;
192 194
(...skipping 28 matching lines...) Expand all
221 return false; 223 return false;
222 } 224 }
223 225
224 template <> 226 template <>
225 bool TextCodecUTF8::handlePartialSequence<UChar>(UChar*& destination, 227 bool TextCodecUTF8::handlePartialSequence<UChar>(UChar*& destination,
226 const uint8_t*& source, 228 const uint8_t*& source,
227 const uint8_t* end, 229 const uint8_t* end,
228 bool flush, 230 bool flush,
229 bool stopOnError, 231 bool stopOnError,
230 bool& sawError) { 232 bool& sawError) {
231 ASSERT(m_partialSequenceSize); 233 DCHECK(m_partialSequenceSize);
232 do { 234 do {
233 if (isASCII(m_partialSequence[0])) { 235 if (isASCII(m_partialSequence[0])) {
234 *destination++ = m_partialSequence[0]; 236 *destination++ = m_partialSequence[0];
235 consumePartialSequenceByte(); 237 consumePartialSequenceByte();
236 continue; 238 continue;
237 } 239 }
238 int count = nonASCIISequenceLength(m_partialSequence[0]); 240 int count = nonASCIISequenceLength(m_partialSequence[0]);
239 if (!count) { 241 if (!count) {
240 handleError(destination, stopOnError, sawError); 242 handleError(destination, stopOnError, sawError);
241 if (stopOnError) 243 if (stopOnError)
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 continue; 336 continue;
335 } 337 }
336 int count = nonASCIISequenceLength(*source); 338 int count = nonASCIISequenceLength(*source);
337 int character; 339 int character;
338 if (count == 0) { 340 if (count == 0) {
339 character = nonCharacter1; 341 character = nonCharacter1;
340 } else { 342 } else {
341 if (count > end - source) { 343 if (count > end - source) {
342 SECURITY_DCHECK(end - source < 344 SECURITY_DCHECK(end - source <
343 static_cast<ptrdiff_t>(sizeof(m_partialSequence))); 345 static_cast<ptrdiff_t>(sizeof(m_partialSequence)));
344 ASSERT(!m_partialSequenceSize); 346 DCHECK(!m_partialSequenceSize);
345 m_partialSequenceSize = end - source; 347 m_partialSequenceSize = end - source;
346 memcpy(m_partialSequence, source, m_partialSequenceSize); 348 memcpy(m_partialSequence, source, m_partialSequenceSize);
347 source = end; 349 source = end;
348 break; 350 break;
349 } 351 }
350 character = decodeNonASCIISequence(source, count); 352 character = decodeNonASCIISequence(source, count);
351 } 353 }
352 if (isNonCharacter(character)) { 354 if (isNonCharacter(character)) {
353 sawError = true; 355 sawError = true;
354 if (stopOnError) 356 if (stopOnError)
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 continue; 417 continue;
416 } 418 }
417 int count = nonASCIISequenceLength(*source); 419 int count = nonASCIISequenceLength(*source);
418 int character; 420 int character;
419 if (count == 0) { 421 if (count == 0) {
420 character = nonCharacter1; 422 character = nonCharacter1;
421 } else { 423 } else {
422 if (count > end - source) { 424 if (count > end - source) {
423 SECURITY_DCHECK(end - source < 425 SECURITY_DCHECK(end - source <
424 static_cast<ptrdiff_t>(sizeof(m_partialSequence))); 426 static_cast<ptrdiff_t>(sizeof(m_partialSequence)));
425 ASSERT(!m_partialSequenceSize); 427 DCHECK(!m_partialSequenceSize);
426 m_partialSequenceSize = end - source; 428 m_partialSequenceSize = end - source;
427 memcpy(m_partialSequence, source, m_partialSequenceSize); 429 memcpy(m_partialSequence, source, m_partialSequenceSize);
428 source = end; 430 source = end;
429 break; 431 break;
430 } 432 }
431 character = decodeNonASCIISequence(source, count); 433 character = decodeNonASCIISequence(source, count);
432 } 434 }
433 if (isNonCharacter(character)) { 435 if (isNonCharacter(character)) {
434 sawError = true; 436 sawError = true;
435 if (stopOnError) 437 if (stopOnError)
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 return encodeCommon(characters, length); 489 return encodeCommon(characters, length);
488 } 490 }
489 491
490 CString TextCodecUTF8::encode(const LChar* characters, 492 CString TextCodecUTF8::encode(const LChar* characters,
491 size_t length, 493 size_t length,
492 UnencodableHandling) { 494 UnencodableHandling) {
493 return encodeCommon(characters, length); 495 return encodeCommon(characters, length);
494 } 496 }
495 497
496 } // namespace WTF 498 } // namespace WTF
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/text/TextCodecUTF16.cpp ('k') | third_party/WebKit/Source/wtf/text/TextEncoding.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698