| Index: runtime/bin/directory_linux.cc
|
| diff --git a/runtime/bin/directory_linux.cc b/runtime/bin/directory_linux.cc
|
| index f3c1ec2fe5806dd527e31800a441894110d759fd..bd8475374be7f0430dd0dbb00214a01220f955f8 100644
|
| --- a/runtime/bin/directory_linux.cc
|
| +++ b/runtime/bin/directory_linux.cc
|
| @@ -416,7 +416,18 @@ Directory::ExistsResult Directory::Exists(const char* dir_name) {
|
|
|
|
|
| char* Directory::Current() {
|
| - return getcwd(NULL, 0);
|
| + size_t size = PATH_MAX;
|
| + char* buffer = NULL;
|
| + for (char* result = NULL; result == NULL; size *= 2) {
|
| + if ((buffer = reinterpret_cast<char*>(realloc(buffer, size))) == NULL) {
|
| + return NULL;
|
| + }
|
| + result = getcwd(buffer, size);
|
| + if (result == NULL && errno != ERANGE) {
|
| + return NULL;
|
| + }
|
| + }
|
| + return buffer;
|
| }
|
|
|
|
|
|
|