Reviewers: Søren Gjesse, Description: Introducing a new StrNDup function that uses new[] for when we dispose the result using delete[].
Please review this at http://codereview.chromium.org/48127 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/allocation.h M src/allocation.cc M src/d8-readline.cc Index: src/allocation.cc =================================================================== --- src/allocation.cc (revision 1525) +++ src/allocation.cc (working copy) @@ -87,6 +87,16 @@ } +char* StrNDup(const char* str, size_t n) { + size_t length = strlen(str); + if (n < length) length = n; + char* result = NewArray<char>(length + 1); + memcpy(result, str, length * kCharSize); + result[length] = '\0'; + return result; +} + + int NativeAllocationChecker::allocation_disallowed_ = 0; Index: src/d8-readline.cc =================================================================== --- src/d8-readline.cc (revision 1525) +++ src/d8-readline.cc (working copy) @@ -103,7 +103,7 @@ static unsigned current_index; static Persistent<Array> current_completions; if (state == 0) { - i::SmartPointer<char> full_text(i::OS::StrNDup(rl_line_buffer, rl_point)); + i::SmartPointer<char> full_text(i::StrNDup(rl_line_buffer, rl_point)); HandleScope scope; Handle<Array> completions = Shell::GetCompletions(String::New(text), String::New(*full_text)); Index: src/allocation.h =================================================================== --- src/allocation.h (revision 1525) +++ src/allocation.h (working copy) @@ -119,10 +119,11 @@ } -// The normal strdup function uses malloc. This version of StrDup -// uses new and calls the FatalProcessOutOfMemory handler if -// allocation fails. +// The normal strdup functions use malloc. These versions of StrDup +// and StrNDup uses new and calls the FatalProcessOutOfMemory handler +// if allocation fails. char* StrDup(const char* str); +char* StrNDup(const char* str, size_t n); // Allocation policy for allocating in the C free store using malloc --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
