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
-~----------~----~----~----~------~----~------~--~---

Reply via email to