diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-09 09:58:33 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-09 09:58:33 +0000 |
commit | 8acf0684c77f98854507470b8da2f294772295bd (patch) | |
tree | 723c0119ffee48ef64fd1b6378d43fc462b724fd /net/ftp | |
parent | b4397798ec8cf27b83d2ff3bb71ba5de0129659e (diff) | |
download | chromium_src-8acf0684c77f98854507470b8da2f294772295bd.zip chromium_src-8acf0684c77f98854507470b8da2f294772295bd.tar.gz chromium_src-8acf0684c77f98854507470b8da2f294772295bd.tar.bz2 |
FTP: fix a misuse of isspace (it can only operate on char,
not char16; this triggers an assertion on Windows,
see http://codereview.chromium.org/6802006/
and http://msdn.microsoft.com/en-us/library/y13z34da(v=vs.71).aspx)
This change replaces isspace with ICU's u_isspace.
The original problem was introduced by http://codereview.chromium.org/449011/
The problem was detected while landing http://codereview.chromium.org/6718043,
which adds more tests with non-ASCII characters.
BUG=none
Review URL: http://codereview.chromium.org/6802012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81037 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/ftp')
-rw-r--r-- | net/ftp/ftp_util.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/net/ftp/ftp_util.cc b/net/ftp/ftp_util.cc index 6c7959f..abbeeda 100644 --- a/net/ftp/ftp_util.cc +++ b/net/ftp/ftp_util.cc @@ -6,6 +6,7 @@ #include <vector> +#include "base/i18n/char_iterator.h" #include "base/logging.h" #include "base/string_number_conversions.h" #include "base/string_tokenizer.h" @@ -14,6 +15,7 @@ #include "base/utf_string_conversions.h" #include "unicode/datefmt.h" #include "unicode/dtfmtsym.h" +#include "unicode/uchar.h" // For examples of Unix<->VMS path conversions, see the unit test file. On VMS // a path looks differently depending on whether it's a file or directory. @@ -209,19 +211,20 @@ bool FtpUtil::LsDateListingToTime(const string16& month, const string16& day, // static string16 FtpUtil::GetStringPartAfterColumns(const string16& text, int columns) { - size_t pos = 0; + base::i18n::UTF16CharIterator iter(&text); + // TODO(jshin): Is u_isspace the right function to use here? for (int i = 0; i < columns; i++) { // Skip the leading whitespace. - while (pos < text.length() && isspace(text[pos])) - pos++; + while (!iter.end() && u_isspace(iter.get())) + iter.Advance(); // Skip the actual text of i-th column. - while (pos < text.length() && !isspace(text[pos])) - pos++; + while (!iter.end() && !u_isspace(iter.get())) + iter.Advance(); } - string16 result(text.substr(pos)); + string16 result(text.substr(iter.array_pos())); TrimWhitespace(result, TRIM_ALL, &result); return result; } |