From ecd58aec08964340b7b74900f806e84392cf6065 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sat, 15 Mar 2014 16:54:06 +0000 Subject: [PATCH] py: Fix bug in vstr_ins_blank_bytes. --- py/vstr.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/py/vstr.c b/py/vstr.c index 90c3c06e2c..c518fa7048 100644 --- a/py/vstr.c +++ b/py/vstr.c @@ -227,11 +227,10 @@ char *vstr_ins_blank_bytes(vstr_t *vstr, uint byte_pos, uint byte_len) { if (!vstr_ensure_extra(vstr, byte_len)) { return NULL; } - // copy up the string to make room for the new bytes - memmove(vstr->buf + l - 1 + byte_len, vstr->buf + l - 1, l - byte_pos); + // copy up the string to make room for the new bytes; +1 for the null byte + memmove(vstr->buf + byte_pos + byte_len, vstr->buf + byte_pos, l - byte_pos + 1); // increase the length vstr->len += byte_len; - vstr->buf[vstr->len] = 0; } return vstr->buf + byte_pos; } @@ -243,9 +242,9 @@ void vstr_ins_byte(vstr_t *vstr, uint byte_pos, byte b) { } } -void vstr_ins_char(vstr_t *vstr, uint pos, unichar chr) { +void vstr_ins_char(vstr_t *vstr, uint char_pos, unichar chr) { // TODO UNICODE - char *s = vstr_ins_blank_bytes(vstr, pos, 1); + char *s = vstr_ins_blank_bytes(vstr, char_pos, 1); if (s != NULL) { *s = chr; }