changeset 681:ceb73b712121

Fix an issue in editBuffer handling.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 09 Jul 2018 05:59:13 +0300
parents 7d4730232ee3
children 2d4089c92939
files main.c util.c util.h
diffstat 3 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/main.c	Mon Jul 02 00:04:53 2018 +0300
+++ b/main.c	Mon Jul 09 05:59:13 2018 +0300
@@ -1759,8 +1759,7 @@
         if (editHistPos < editHistMax)
         {
             editHistPos++;
-            nn_editbuf_free(editBuf);
-            editBuf = nn_editbuf_copy(editHistBuf[editHistPos]);
+            nn_editbuf_copy_to(editBuf, editHistBuf[editHistPos]);
         }
         break;
 
@@ -1768,8 +1767,7 @@
         if (editHistPos > 0)
         {
             editHistPos--;
-            nn_editbuf_free(editBuf);
-            editBuf = nn_editbuf_copy(editHistBuf[editHistPos]);
+            nn_editbuf_copy_to(editBuf, editHistBuf[editHistPos]);
         }
         break;
 
--- a/util.c	Mon Jul 02 00:04:53 2018 +0300
+++ b/util.c	Mon Jul 09 05:59:13 2018 +0300
@@ -402,20 +402,24 @@
 }
 
 
-nn_editbuf_t * nn_editbuf_copy(nn_editbuf_t *src)
+void nn_editbuf_copy_to(nn_editbuf_t *dst, const nn_editbuf_t *src)
+{
+    memcpy(dst->data, src->data, src->size);
+    dst->pos = dst->len = src->len;
+    dst->dirty = TRUE;
+}
+
+
+nn_editbuf_t * nn_editbuf_copy(const nn_editbuf_t *src)
 {
     nn_editbuf_t *res;
 
-    assert(src != NULL);
-
     if (src == NULL) return NULL;
 
     if ((res = nn_editbuf_new(src->size)) == NULL)
         return NULL;
 
-    memcpy(res->data, src->data, src->size);
-    res->pos = res->len = src->len;
-    res->dirty = TRUE;
+    nn_editbuf_copy_to(res, src);
 
     return res;
 }
--- a/util.h	Mon Jul 02 00:04:53 2018 +0300
+++ b/util.h	Mon Jul 09 05:59:13 2018 +0300
@@ -68,7 +68,8 @@
 void        nn_editbuf_clear(nn_editbuf_t *buf);
 nn_editbuf_t * nn_editbuf_new(size_t n);
 void        nn_editbuf_free(nn_editbuf_t *buf);
-nn_editbuf_t * nn_editbuf_copy(nn_editbuf_t *src);
+nn_editbuf_t * nn_editbuf_copy(const nn_editbuf_t *src);
+void        nn_editbuf_copy_to(nn_editbuf_t *dst, const nn_editbuf_t *src);
 void        nn_editbuf_setpos(nn_editbuf_t *buf, size_t pos);
 char *      nn_editbuf_get_string(nn_editbuf_t *buf, size_t start, size_t end);