diff --git a/src/chars.c b/src/chars.c
index f484e7955b8a79b78b55d9b19ecd558ffc20a73e..1bddb35ca2fa579599c3e93ca30f1a17636dd82d 100644
--- a/src/chars.c
+++ b/src/chars.c
@@ -197,12 +197,15 @@ bool is_word_mbchar(const char *c, bool allow_punct)
 	return TRUE;
 
     if (word_chars != NULL && *word_chars != '\0') {
+	bool wordforming;
 	char *symbol = charalloc(MB_CUR_MAX + 1);
 	int symlen = parse_mbchar(c, symbol, NULL);
 
 	symbol[symlen] = '\0';
+	wordforming = (strstr(word_chars, symbol) != NULL);
+	free(symbol);
 
-	return (strstr(word_chars, symbol) != NULL);
+	return wordforming;
     }
 
     return (allow_punct && is_punct_mbchar(c));