diff --git a/ChangeLog b/ChangeLog
index ab1093f8541aefebeb4fb4264336586bf8ba2c97..76a894207ede4449f73cc7751569b31e083e7ed9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-10  David Lawrence Ramsey  <pooka109@gmail.com>
+
+	* utils.c (ngetdelim): Simplify.
+	* utils.c (ngetline, ngetdelim): Update copyright notice to
+	account for modifications.
+
 2007-08-07  David Lawrence Ramsey  <pooka109@gmail.com>
 
 	* nano.c (copy_from_file): Fix potential segfault, found by Paul
diff --git a/src/utils.c b/src/utils.c
index 38c313482eeed4f23edafb718e1bd5b691497ee4..7785c7cf04397c9eaae8732d00e807a512e9a89a 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -165,7 +165,8 @@ void sunder(char *str)
  * Foundation's address updated:
  *
  * GNU Mailutils -- a suite of utilities for electronic mail
- * Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ * Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free
+ * Software Foundation, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -207,15 +208,15 @@ ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
 
     /* Allocate the line the first time. */
     if (*lineptr == NULL) {
-	*lineptr = charalloc(MAX_BUF_SIZE);
 	*n = MAX_BUF_SIZE;
+	*lineptr = charalloc(*n);
     }
 
     while ((c = getc(stream)) != EOF) {
 	/* Check if more memory is needed. */
 	if (indx >= *n) {
-	    *lineptr = charealloc(*lineptr, *n + MAX_BUF_SIZE);
 	    *n += MAX_BUF_SIZE;
+	    *lineptr = charealloc(*lineptr, *n);
 	}
 
 	/* Put the result in the line. */
@@ -228,8 +229,8 @@ ssize_t ngetdelim(char **lineptr, size_t *n, int delim, FILE *stream)
 
     /* Make room for the null character. */
     if (indx >= *n) {
-	*lineptr = charealloc(*lineptr, *n + MAX_BUF_SIZE);
 	*n += MAX_BUF_SIZE;
+	*lineptr = charealloc(*lineptr, *n);
     }
 
     /* Null-terminate the buffer. */