| Index: base/file_util_posix.cc
|
| ===================================================================
|
| --- base/file_util_posix.cc (revision 176660)
|
| +++ base/file_util_posix.cc (working copy)
|
| @@ -343,15 +343,15 @@
|
| DCHECK(recursive || S_ISDIR(info.stat.st_mode));
|
|
|
| while (success && !current.empty()) {
|
| - // current is the source path, including from_path, so append
|
| - // the suffix after from_path to to_path to create the target_path.
|
| - FilePath target_path(to_path);
|
| - if (from_path_base != current) {
|
| - if (!from_path_base.AppendRelativePath(current, &target_path)) {
|
| - success = false;
|
| - break;
|
| - }
|
| + // current is the source path, including from_path, so paste
|
| + // the suffix after from_path onto to_path to create the target_path.
|
| + std::string suffix(¤t.value().c_str()[from_path_base.value().size()]);
|
| + // Strip the leading '/' (if any).
|
| + if (!suffix.empty()) {
|
| + DCHECK_EQ('/', suffix[0]);
|
| + suffix.erase(0, 1);
|
| }
|
| + const FilePath target_path = to_path.Append(suffix);
|
|
|
| if (S_ISDIR(info.stat.st_mode)) {
|
| if (mkdir(target_path.value().c_str(), info.stat.st_mode & 01777) != 0 &&
|
|
|