# HG changeset patch # User Matti Hamalainen # Date 1531105153 -10800 # Node ID ceb73b71212177f6084b7bf15f0a39aa29a4741e # Parent 7d4730232ee32ea2e50765a8c784803b54822855 Fix an issue in editBuffer handling. diff -r 7d4730232ee3 -r ceb73b712121 main.c --- 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; diff -r 7d4730232ee3 -r ceb73b712121 util.c --- 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; } diff -r 7d4730232ee3 -r ceb73b712121 util.h --- 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);