diff --git a/src/Makefile b/src/Makefile
index c888661..619a214 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -602,6 +602,10 @@
 # PURIFY - remove the # to use the "purify" program (hoi Nia++!)
 #PURIFY = purify
 
+# VALGRIND - remove the # to use valgrind for memory leaks and access errors.
+#            Used for the unittest targets.
+# VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=25 --log-file=valgrind.$@
+
 # NBDEBUG - debugging the netbeans interface.
 #EXTRA_DEFS = -DNBDEBUG
 
@@ -1567,6 +1571,7 @@
 
 UNITTEST_SRC = $(JSON_TEST_SRC) $(MEMFILE_TEST_SRC) $(MESSAGE_TEST_SRC)
 UNITTEST_TARGETS = $(JSON_TEST_TARGET) $(MEMFILE_TEST_TARGET) $(MESSAGE_TEST_TARGET)
+RUN_UNITTESTS = run_json_test run_memfile_test run_message_test
 
 # All sources, also the ones that are not configured
 ALL_SRC = $(BASIC_SRC) $(ALL_GUI_SRC) $(UNITTEST_SRC) $(EXTRA_SRC)
@@ -1987,19 +1992,16 @@
 	$(MAKE) -f Makefile $(UNITTEST_TARGETS)
 
 # Execute the unittests one by one.
-unittest unittests: $(UNITTEST_TARGETS)
-	@for t in $(UNITTEST_TARGETS); do \
-		./$$t || exit 1; echo $$t passed; \
-	done
+unittest unittests: $(RUN_UNITTESTS)
 
 run_json_test: $(JSON_TEST_TARGET)
-	./$(JSON_TEST_TARGET)
+	$(VALGRIND) ./$(JSON_TEST_TARGET) || exit 1; echo $* passed;
 
 run_memfile_test: $(MEMFILE_TEST_TARGET)
-	./$(MEMFILE_TEST_TARGET)
+	$(VALGRIND) ./$(MEMFILE_TEST_TARGET) || exit 1; echo $* passed;
 
 run_message_test: $(MESSAGE_TEST_TARGET)
-	./$(MESSAGE_TEST_TARGET)
+	$(VALGRIND) ./$(MESSAGE_TEST_TARGET) || exit 1; echo $* passed;
 
 # Run individual OLD style test, assuming that Vim was already compiled.
 test1 \
diff --git a/src/message.c b/src/message.c
index fe72e43..7aec2d6 100644
--- a/src/message.c
+++ b/src/message.c
@@ -298,9 +298,9 @@
 	{
 	    do
 		half = half - (*mb_head_off)(s, s + half - 1) - 1;
-	    while (utf_iscomposing(utf_ptr2char(s + half)) && half > 0);
+	    while (half > 0 && utf_iscomposing(utf_ptr2char(s + half)));
 	    n = ptr2cells(s + half);
-	    if (len + n > room)
+	    if (len + n > room || half == 0)
 		break;
 	    len += n;
 	    i = half;
diff --git a/src/message_test.c b/src/message_test.c
index 41b8875..ec231e8e 100644
--- a/src/message_test.c
+++ b/src/message_test.c
@@ -28,37 +28,69 @@
     static void
 test_trunc_string(void)
 {
-    char_u  buf[40];
+    char_u  *buf; /*allocated every time to find uninit errors */
+    char_u  *s;
 
     /* in place */
+    buf = alloc(40);
     STRCPY(buf, "text");
     trunc_string(buf, buf, 20, 40);
     assert(STRCMP(buf, "text") == 0);
+    vim_free(buf);
 
+    buf = alloc(40);
     STRCPY(buf, "a short text");
     trunc_string(buf, buf, 20, 40);
     assert(STRCMP(buf, "a short text") == 0);
+    vim_free(buf);
 
+    buf = alloc(40);
     STRCPY(buf, "a text tha just fits");
     trunc_string(buf, buf, 20, 40);
     assert(STRCMP(buf, "a text tha just fits") == 0);
+    vim_free(buf);
 
+    buf = alloc(40);
     STRCPY(buf, "a text that nott fits");
     trunc_string(buf, buf, 20, 40);
     assert(STRCMP(buf, "a text t...nott fits") == 0);
+    vim_free(buf);
 
     /* copy from string to buf */
-    trunc_string((char_u *)"text", buf, 20, 40);
+    buf = alloc(40);
+    s = vim_strsave((char_u *)"text");
+    trunc_string(s, buf, 20, 40);
     assert(STRCMP(buf, "text") == 0);
+    vim_free(buf);
+    vim_free(s);
 
-    trunc_string((char_u *)"a short text", buf, 20, 40);
+    buf = alloc(40);
+    s = vim_strsave((char_u *)"a text that fits");
+    trunc_string(s, buf, 34, 40);
+    assert(STRCMP(buf, "a text that fits") == 0);
+    vim_free(buf);
+    vim_free(s);
+
+    buf = alloc(40);
+    s = vim_strsave((char_u *)"a short text");
+    trunc_string(s, buf, 20, 40);
     assert(STRCMP(buf, "a short text") == 0);
+    vim_free(buf);
+    vim_free(s);
 
-    trunc_string((char_u *)"a text tha just fits", buf, 20, 40);
+    buf = alloc(40);
+    s = vim_strsave((char_u *)"a text tha just fits");
+    trunc_string(s, buf, 20, 40);
     assert(STRCMP(buf, "a text tha just fits") == 0);
+    vim_free(buf);
+    vim_free(s);
 
-    trunc_string((char_u *)"a text that nott fits", buf, 20, 40);
+    buf = alloc(40);
+    s = vim_strsave((char_u *)"a text that nott fits");
+    trunc_string(s, buf, 20, 40);
     assert(STRCMP(buf, "a text t...nott fits") == 0);
+    vim_free(buf);
+    vim_free(s);
 }
 
     int
diff --git a/src/version.c b/src/version.c
index 55a99be..6f80d19 100644
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2068,
+/**/
     2067,
 /**/
     2066,
