# HG changeset patch # User Bram Moolenaar # Date 1544882407 -3600 # Node ID 694594a0d25d54c31099905215214507721401a4 # Parent 2bd7ea9178618f61416bf96eb43bef0084a0b3f5 patch 8.1.0593: illegal memory access in libvterm test commit https://github.com/vim/vim/commit/37e3edce200c5a0ae8f81ca729b18d75477d2725 Author: Bram Moolenaar Date: Sat Dec 15 14:49:34 2018 +0100 patch 8.1.0593: illegal memory access in libvterm test Problem: Illegal memory access in libvterm test. Solution: Fix off-by-one error. diff --git a/src/libvterm/Makefile b/src/libvterm/Makefile --- a/src/libvterm/Makefile +++ b/src/libvterm/Makefile @@ -52,6 +52,9 @@ INCDIR=$(PREFIX)/include MANDIR=$(PREFIX)/share/man MAN3DIR=$(MANDIR)/man3 +# Uncomment to check for memory access errors with valgrind. +# VALGRIND=1 + all: $(LIBRARY) $(BINFILES) $(LIBRARY): $(OBJECTS) diff --git a/src/libvterm/src/vterm.c b/src/libvterm/src/vterm.c --- a/src/libvterm/src/vterm.c +++ b/src/libvterm/src/vterm.c @@ -169,9 +169,9 @@ INTERNAL void vterm_push_output_vsprintf #else written = vsprintf(buffer, format, args); - if(written >= (int)(vt->outbuffer_len - vt->outbuffer_cur)) { + if(written >= (int)(vt->outbuffer_len - vt->outbuffer_cur - 1)) { /* output was truncated */ - written = vt->outbuffer_len - vt->outbuffer_cur; + written = vt->outbuffer_len - vt->outbuffer_cur - 1; } if (written > 0) { diff --git a/src/libvterm/t/run-test.pl b/src/libvterm/t/run-test.pl --- a/src/libvterm/t/run-test.pl +++ b/src/libvterm/t/run-test.pl @@ -16,7 +16,7 @@ my ( $hin, $hout, $hpid ); { local $ENV{LD_LIBRARY_PATH} = ".libs"; my @command = "t/.libs/harness"; - unshift @command, "valgrind", "--quiet", "--error-exitcode=126" if $VALGRIND; + unshift @command, "valgrind", "--tool=memcheck", "--leak-check=yes", "--num-callers=25", "--log-file=valgrind.out", "--error-exitcode=126" if $VALGRIND; $hpid = open2 $hout, $hin, @command or die "Cannot open2 harness - $!"; } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -800,6 +800,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 593, +/**/ 592, /**/ 591,