Chromium Code Reviews| Index: tools/gn/label_pattern.cc |
| diff --git a/tools/gn/label_pattern.cc b/tools/gn/label_pattern.cc |
| index 396a9b73a9d4fc1f269d926496b2dda5d0a46e89..3cb91c37a44be6d913775bc8e57fe25050d54503 100644 |
| --- a/tools/gn/label_pattern.cc |
| +++ b/tools/gn/label_pattern.cc |
| @@ -4,6 +4,7 @@ |
| #include "tools/gn/label_pattern.h" |
| +#include "base/strings/string_util.h" |
| #include "tools/gn/err.h" |
| #include "tools/gn/filesystem_utils.h" |
| #include "tools/gn/value.h" |
| @@ -121,7 +122,22 @@ LabelPattern LabelPattern::GetPattern(const SourceDir& current_dir, |
| // Extract path and name. |
| base::StringPiece path; |
| base::StringPiece name; |
| - size_t colon = str.find(':'); |
| + size_t offset = 0; |
| +#if defined(OS_WIN) |
| + if (IsPathAbsolute(str)) { |
| + if (str[0] != '/') { |
| + *err = Err(value, "Bad absolute path.", |
| + "Absolute paths must be on the form /C:\\"); |
|
brettw
2015/02/06 23:08:38
Ditto from previous file.
|
| + return LabelPattern(); |
| + } |
| + if (str.size() > 3 && str[2] == ':' && IsSlash(str[3]) && |
| + IsAsciiAlpha(str[1])) { |
| + // Skip over the drive letter colon. |
| + offset = 3; |
| + } |
| + } |
| +#endif |
| + size_t colon = str.find(':', offset); |
| if (colon == std::string::npos) { |
| path = base::StringPiece(str); |
| } else { |