Chromium Code Reviews| Index: tools/gn/label.cc |
| diff --git a/tools/gn/label.cc b/tools/gn/label.cc |
| index 095128d81e2014856e9bee4d4e45ebd509f0c162..4282419afa4204e5df3f8f57f84aad350f4c76fc 100644 |
| --- a/tools/gn/label.cc |
| +++ b/tools/gn/label.cc |
| @@ -5,7 +5,9 @@ |
| #include "tools/gn/label.h" |
| #include "base/logging.h" |
| +#include "base/strings/string_util.h" |
| #include "tools/gn/err.h" |
| +#include "tools/gn/filesystem_utils.h" |
| #include "tools/gn/parse_tree.h" |
| #include "tools/gn/value.h" |
| @@ -93,8 +95,22 @@ bool Resolve(const SourceDir& current_dir, |
| Err* err) { |
| // To workaround the problem that StringPiece operator[] doesn't return a ref. |
| const char* input_str = input.data(); |
| - |
| - size_t path_separator = input.find_first_of(":("); |
| + size_t offset = 0; |
| +#if defined(OS_WIN) |
| + if (IsPathAbsolute(input)) { |
| + if (input[0] != '/') { |
| + *err = Err(original_value, "Bad absolute path.", |
| + "Absolute paths must be on the form /C:\\"); |
|
brettw
2015/02/06 23:08:37
"on the form" -> "of the form". Can you append to
|
| + return false; |
| + } |
| + if (input.size() > 3 && input[2] == ':' && IsSlash(input[3]) && |
| + IsAsciiAlpha(input[1])) { |
| + // Skip over the drive letter colon. |
| + offset = 3; |
| + } |
| + } |
| +#endif |
| + size_t path_separator = input.find_first_of(":(", offset); |
| base::StringPiece location_piece; |
| base::StringPiece name_piece; |
| base::StringPiece toolchain_piece; |