diff --git a/configs/samples/voicemail.conf.sample b/configs/samples/voicemail.conf.sample
index c90f8513c86a3129ab0dcb00fbd714c992f57654..e4130d356f6faa9b8b821106d3b7a2415f87a2e0 100644
--- a/configs/samples/voicemail.conf.sample
+++ b/configs/samples/voicemail.conf.sample
@@ -145,8 +145,9 @@ maxlogins=3
 ; You can select between two variables by using dialplan functions, e.g.
 ;     ${IF(${ISNULL(${ORIG_VM_DATE})}?${VM_DATE}:${ORIG_VM_DATE})}
 ;
-; Note: The emailbody config row can only be up to 512 characters due to a
-;       limitation in the Asterisk configuration subsystem.
+; Note: The emailbody config row can only be up to 8190 characters due to a
+;       limitation in the Asterisk configuration subsystem.  If compiled with
+;       LOW_MEMORY the limit is 510 characters.
 ;emailsubject=[PBX]: New message ${VM_MSGNUM} in mailbox ${VM_MAILBOX}
 ; The following definition is very close to the default, but the default shows
 ; just the CIDNAME, if it is not null, otherwise just the CIDNUM, or "an unknown
diff --git a/main/config.c b/main/config.c
index 118b9586ed42b73f0f36650732fe64bdc4f808db..8107fce04235a89a429822f3046934f12dbfeddc 100644
--- a/main/config.c
+++ b/main/config.c
@@ -2195,10 +2195,10 @@ static struct ast_config *config_text_file_load(const char *database, const char
 					lineno++;
 					if (fgets(buf, sizeof(buf), f)) {
 						/* Skip lines that are too long */
-						if (strlen(buf) == sizeof(buf) - 1 && buf[sizeof(buf) - 1] != '\n') {
+						if (strlen(buf) == sizeof(buf) - 1 && buf[sizeof(buf) - 2] != '\n') {
 							ast_log(LOG_WARNING, "Line %d too long, skipping. It begins with: %.32s...\n", lineno, buf);
 							while (fgets(buf, sizeof(buf), f)) {
-								if (strlen(buf) != sizeof(buf) - 1 || buf[sizeof(buf) - 1] == '\n') {
+								if (strlen(buf) != sizeof(buf) - 1 || buf[sizeof(buf) - 2] == '\n') {
 									break;
 								}
 							}