| Index: tools/gn/label_pattern.cc
|
| diff --git a/tools/gn/label_pattern.cc b/tools/gn/label_pattern.cc
|
| index 396a9b73a9d4fc1f269d926496b2dda5d0a46e89..4b31174d946dfb2f64f8834f31e00b2b1dc3e1b5 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,23 @@ 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 of the form /C:\\ but this is \"" +
|
| + str.as_string() + "\".");
|
| + 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 {
|
|
|