Cease null-terminating internal CharBuf buffer

The internal buffer is inaccessible now.


Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/641250dd
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/641250dd
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/641250dd

Branch: refs/heads/master
Commit: 641250dd1b067c291a5d794184298dc74eb5856c
Parents: a861235
Author: Nick Wellnhofer <wellnho...@aevum.de>
Authored: Thu Nov 12 15:05:51 2015 +0100
Committer: Nick Wellnhofer <wellnho...@aevum.de>
Committed: Thu Nov 12 15:05:51 2015 +0100

----------------------------------------------------------------------
 runtime/core/Clownfish/CharBuf.c | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/641250dd/runtime/core/Clownfish/CharBuf.c
----------------------------------------------------------------------
diff --git a/runtime/core/Clownfish/CharBuf.c b/runtime/core/Clownfish/CharBuf.c
index bd388b8..0f1b7c3 100644
--- a/runtime/core/Clownfish/CharBuf.c
+++ b/runtime/core/Clownfish/CharBuf.c
@@ -56,14 +56,11 @@ CB_new(size_t size) {
 CharBuf*
 CB_init(CharBuf *self, size_t size) {
     // Derive.
-    self->ptr = (char*)MALLOCATE(size + 1);
-
-    // Init.
-    *self->ptr = '\0'; // Empty string.
+    self->ptr = (char*)MALLOCATE(size);
 
     // Assign.
     self->size = 0;
-    self->cap  = size + 1;
+    self->cap  = size;
 
     return self;
 }
@@ -76,9 +73,9 @@ CB_Destroy_IMP(CharBuf *self) {
 
 void
 CB_Grow_IMP(CharBuf *self, size_t size) {
-    if (size >= self->cap) {
-        self->cap = size + 1;
-        self->ptr = (char*)REALLOCATE(self->ptr, self->cap);
+    if (size > self->cap) {
+        self->cap = size;
+        self->ptr = (char*)REALLOCATE(self->ptr, size);
     }
 }
 
@@ -264,14 +261,13 @@ CB_Yield_String_IMP(CharBuf *self) {
 void
 CB_Cat_Char_IMP(CharBuf *self, int32_t code_point) {
     const size_t MAX_UTF8_BYTES = 4;
-    if (self->size + MAX_UTF8_BYTES >= self->cap) {
+    if (self->size + MAX_UTF8_BYTES > self->cap) {
         CB_Grow(self, Memory_oversize(self->size + MAX_UTF8_BYTES,
                                      sizeof(char)));
     }
     char *end = self->ptr + self->size;
     size_t count = StrHelp_encode_utf8_char(code_point, (uint8_t*)end);
     self->size += count;
-    *(end + count) = '\0';
 }
 
 CharBuf*
@@ -281,7 +277,6 @@ CB_Clone_IMP(CharBuf *self) {
 
     clone->size = size;
     memcpy(clone->ptr, self->ptr, size);
-    clone->ptr[size] = '\0';
 
     return clone;
 }
@@ -289,13 +284,12 @@ CB_Clone_IMP(CharBuf *self) {
 static CFISH_INLINE void
 SI_cat_utf8(CharBuf *self, const char* ptr, size_t size) {
     const size_t new_size = self->size + size;
-    if (new_size >= self->cap) {
+    if (new_size > self->cap) {
         size_t amount = Memory_oversize(new_size, sizeof(char));
         CB_Grow(self, amount);
     }
     memcpy(self->ptr + self->size, ptr, size);
     self->size = new_size;
-    self->ptr[new_size] = '\0';
 }
 
 void

Reply via email to