Commit 427ba8ec authored by olehougaard's avatar olehougaard

Introducing a new StrNDup function that uses new[] for when we dispose the result using delete[].

Review URL: http://codereview.chromium.org/48127

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent c2e2d59e
......@@ -87,6 +87,16 @@ char* StrDup(const char* str) {
}
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;
......
......@@ -119,10 +119,11 @@ static void DeleteArray(T* array) {
}
// 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
......
......@@ -103,7 +103,7 @@ char* ReadLineEditor::CompletionGenerator(const char* text, int state) {
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));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment