aboutsummaryrefslogtreecommitdiff
path: root/register.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-03-12 13:54:03 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-03-12 13:54:03 +0100
commit5acc7ee4627a4c6bb38f517d5fb0aed43f4023b7 (patch)
treef1f4763c64dd63328a96dace7282df5c4e577ccc /register.c
parentf7410334b5ff128a44023e31b9ae86c5ea5165b8 (diff)
downloadvis-5acc7ee4627a4c6bb38f517d5fb0aed43f4023b7.tar.gz
vis-5acc7ee4627a4c6bb38f517d5fb0aed43f4023b7.tar.xz
register: make sure returned register content is always NUL terminated
Diffstat (limited to 'register.c')
-rw-r--r--register.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/register.c b/register.c
index 37a30ce..932be28 100644
--- a/register.c
+++ b/register.c
@@ -30,7 +30,10 @@ void register_release(Register *reg) {
const char *register_get(Vis *vis, Register *reg, size_t *len) {
switch (reg->type) {
case REGISTER_NORMAL:
- *len = buffer_length0(&reg->buf);
+ if (reg->buf.len > 0 && reg->buf.data[reg->buf.len-1] != '\0')
+ buffer_append(&reg->buf, "\0", 1);
+ if (len)
+ *len = reg->buf.len > 0 ? reg->buf.len - 1 : 0;
return reg->buf.data;
case REGISTER_CLIPBOARD:
{