diff --git a/ChangeLog b/ChangeLog
index 7f781c1db0ae1df24761b0b4ec2a0d016cbb5bd5..dc8cb0effc92996c7d6399bdb0c1e5885ce07dd9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -197,6 +197,8 @@ CVS code -
 - utils.c:
   num_of_digits()
 	- Use a size_t instead of an int, and rename to digits(). (DLR)
+  align()
+	- Rename variable strp to str for consistency. (DLR)
 - winio.c:
   do_statusbar_output()
 	- Don't set answer_len until after it's been asserted that
@@ -206,6 +208,7 @@ CVS code -
 	  for len plus a trailing multibyte character and/or tab. (DLR)
 	- Don't check for multicolumn characters if the NO_UTF8 flag
 	  isn't set. (DLR)
+	- Free buf_mb when we're done using it. (DLR)
   nanogetstr()
 	- Rename variable def to curranswer to avoid confusion. (DLR)
 	- Only declare and use the tabbed variable if DISABLE_TABCOMP
diff --git a/src/chars.c b/src/chars.c
index ccc8748a56f3734e2566d5e393de372cc0fc05cd..74f534f19c4eecf77900705aadd5c4856d4a99d6 100644
--- a/src/chars.c
+++ b/src/chars.c
@@ -265,11 +265,12 @@ char *make_mbchar(int chr, int *chr_mb_len)
 	    wctomb(NULL, 0);
 	    *chr_mb_len = 0;
 	}
+
+	align(&chr_mb);
     } else {
 #endif
 	*chr_mb_len = 1;
-	chr_mb = charalloc(1);	
-	*chr_mb = (char)chr;
+	chr_mb = mallocstrncpy(NULL, (char *)&chr, 1);
 #ifdef NANO_WIDE
     }
 #endif
diff --git a/src/files.c b/src/files.c
index 7261a3980d4cba01f6a9cc8dbe1c1d43610c243e..a3f94821009db3a06cb744eba65d701c5b6265de 100644
--- a/src/files.c
+++ b/src/files.c
@@ -2801,6 +2801,7 @@ char *do_browser(char *path, DIR *dir)
 		    if (width == 0)
 			width = filecols;
 		}
+
 		wmove(edit, editline, col);
 	    }
 
diff --git a/src/nano.c b/src/nano.c
index fb3f523fd8c34399e64ccfb365b56ff8a05c2cdd..c5cd9a649d4445a454c475dd03da2680f30527fb 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -561,6 +561,7 @@ void help_init(void)
 
 	    free(help_ptr);
 	}
+
 	ptr += sprintf(ptr, "\n");
     }
 
@@ -1470,10 +1471,10 @@ bool do_next_word(bool allow_update)
 	 * line. */
 	if (!is_word_mbchar(char_mb))
 	    break;
+
 	/* If we haven't found it, then we've started on a word, so set
 	 * started_on_word to TRUE. */
-	else
-	    started_on_word = TRUE;
+	started_on_word = TRUE;
 
 	current_x += char_mb_len;
     }
diff --git a/src/proto.h b/src/proto.h
index cf7d2e5ffaadc8ebc120a3eaa4632793f83f2deb..38d186cc903d7454acb4c57b08bb18ca5079edda 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -181,7 +181,7 @@ char *control_mbrep(const char *c, char *crep, int *crep_len);
 int mbwidth(const char *c);
 int mb_cur_max(void);
 char *make_mbchar(int chr, int *chr_mb_len);
-#if defined(ENABLE_NANORC) || defined(ENABLE_EXTRA)
+#if defined(ENABLE_NANORC) || defined(NANO_EXTRA)
 char *make_mbstring(const char *str);
 #endif
 int parse_mbchar(const char *buf, char *chr, bool *bad_chr, size_t
@@ -549,7 +549,7 @@ int digits(size_t n);
 void get_homedir(void);
 bool parse_num(const char *str, ssize_t *val);
 bool parse_line_column(const char *str, int *line, ssize_t *column);
-void align(char **strp);
+void align(char **str);
 void null_at(char **data, size_t index);
 void unsunder(char *str, size_t true_len);
 void sunder(char *str);
diff --git a/src/utils.c b/src/utils.c
index a2b7f75642948de8788f2c48030b2be0a248baac..2069e1f5f3e57ed9f5fbc6060336bf3bcca2166f 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -139,12 +139,12 @@ bool parse_line_column(const char *str, int *line, ssize_t *column)
 }
 
 /* Fix the memory allocation for a string. */
-void align(char **strp)
+void align(char **str)
 {
-    assert(strp != NULL);
+    assert(str != NULL);
 
-    if (*strp != NULL)
-	*strp = charealloc(*strp, strlen(*strp) + 1);
+    if (*str != NULL)
+	*str = charealloc(*str, strlen(*str) + 1);
 }
 
 /* Null a string at a certain index and align it. */
diff --git a/src/winio.c b/src/winio.c
index 8f2d690b67e5e01f19f6551da642afde4dcfdd4a..83a4632dc92134de7013b69079c44ce21de50e75 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -2380,6 +2380,8 @@ char *display_string(const char *buf, size_t start_col, size_t len, bool
 	start_index += buf_mb_len;
     }
 
+    free(buf_mb);
+
     if (index < alloc_len - 1)
 	converted[index] = '\0';