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

Side by Side Diff: base/strings/string_util.cc

Issue 380913003: Fixes for re-enabling more MSVC level 4 warnings: base/ edition #2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix a few more issues Created 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | base/third_party/icu/icu_utf.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/strings/string_util.h" 5 #include "base/strings/string_util.h"
6 6
7 #include <ctype.h> 7 #include <ctype.h>
8 #include <errno.h> 8 #include <errno.h>
9 #include <math.h> 9 #include <math.h>
10 #include <stdarg.h> 10 #include <stdarg.h>
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 int32 truncation_length = static_cast<int32>(byte_size); 216 int32 truncation_length = static_cast<int32>(byte_size);
217 int32 char_index = truncation_length - 1; 217 int32 char_index = truncation_length - 1;
218 const char* data = input.data(); 218 const char* data = input.data();
219 219
220 // Using CBU8, we will move backwards from the truncation point 220 // Using CBU8, we will move backwards from the truncation point
221 // to the beginning of the string looking for a valid UTF8 221 // to the beginning of the string looking for a valid UTF8
222 // character. Once a full UTF8 character is found, we will 222 // character. Once a full UTF8 character is found, we will
223 // truncate the string to the end of that character. 223 // truncate the string to the end of that character.
224 while (char_index >= 0) { 224 while (char_index >= 0) {
225 int32 prev = char_index; 225 int32 prev = char_index;
226 uint32 code_point = 0; 226 base_icu::UChar32 code_point = 0;
227 CBU8_NEXT(data, char_index, truncation_length, code_point); 227 CBU8_NEXT(data, char_index, truncation_length, code_point);
228 if (!IsValidCharacter(code_point) || 228 if (!IsValidCharacter(code_point) ||
229 !IsValidCodepoint(code_point)) { 229 !IsValidCodepoint(code_point)) {
230 char_index = prev - 1; 230 char_index = prev - 1;
231 } else { 231 } else {
232 break; 232 break;
233 } 233 }
234 } 234 }
235 235
236 if (char_index >= 0 ) 236 if (char_index >= 0 )
(...skipping 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 escape = *pattern; 727 escape = *pattern;
728 next(pattern, pattern_end); 728 next(pattern, pattern_end);
729 continue; 729 continue;
730 } 730 }
731 731
732 // Check if the chars match, if so, increment the ptrs. 732 // Check if the chars match, if so, increment the ptrs.
733 const CHAR* pattern_next = *pattern; 733 const CHAR* pattern_next = *pattern;
734 const CHAR* string_next = *string; 734 const CHAR* string_next = *string;
735 base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end); 735 base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
736 if (pattern_char == next(&string_next, string_end) && 736 if (pattern_char == next(&string_next, string_end) &&
737 pattern_char != (base_icu::UChar32) CBU_SENTINEL) { 737 pattern_char != CBU_SENTINEL) {
738 *pattern = pattern_next; 738 *pattern = pattern_next;
739 *string = string_next; 739 *string = string_next;
740 } else { 740 } else {
741 // Uh ho, it did not match, we are done. If the last char was an 741 // Uh oh, it did not match, we are done. If the last char was an
742 // escapement, that means that it was an error to advance the ptr here, 742 // escapement, that means that it was an error to advance the ptr here,
743 // let's put it back where it was. This also mean that the MatchPattern 743 // let's put it back where it was. This also mean that the MatchPattern
744 // function will return false because if we can't match an escape char 744 // function will return false because if we can't match an escape char
745 // here, then no one will. 745 // here, then no one will.
746 if (escape) { 746 if (escape) {
747 *pattern = escape; 747 *pattern = escape;
748 } 748 }
749 return; 749 return;
750 } 750 }
751 751
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 } 883 }
884 884
885 } // namespace 885 } // namespace
886 886
887 size_t base::strlcpy(char* dst, const char* src, size_t dst_size) { 887 size_t base::strlcpy(char* dst, const char* src, size_t dst_size) {
888 return lcpyT<char>(dst, src, dst_size); 888 return lcpyT<char>(dst, src, dst_size);
889 } 889 }
890 size_t base::wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size) { 890 size_t base::wcslcpy(wchar_t* dst, const wchar_t* src, size_t dst_size) {
891 return lcpyT<wchar_t>(dst, src, dst_size); 891 return lcpyT<wchar_t>(dst, src, dst_size);
892 } 892 }
OLDNEW
« no previous file with comments | « no previous file | base/third_party/icu/icu_utf.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698