]> git.wh0rd.org Git - nano.git/commitdiff
fix justify code regression: if we're justifying the entire file, and we
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Thu, 17 Mar 2005 04:48:14 +0000 (04:48 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Thu, 17 Mar 2005 04:48:14 +0000 (04:48 +0000)
haven't found any paragraph(s), we should refresh the screen and get out
instead of breaking out of the loop and acting as though we've justified
something, so as to avoid a segfault

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2384 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/nano.c

index b80ba67476b6bccb948cb7e91c10a7e81df40002..24f3edf83342c600d61ebd2426a4f12fae3938af 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -236,9 +236,9 @@ CVS code -
        - For consistency, preserve placewewant if we didn't unjustify
          instead of setting it to 0. (DLR)
        - When justifying the entire file, properly break out of the
-         loop if there are no more paragraphs after the current one and
-         the paragraph search left us on the magicline, so as to avoid
-         a segfault. (DLR)
+         loop if we've found at least one paragraph, there are no more
+         paragraphs after the current one, and the paragraph search
+         left us on the magicline.  This avoids a segfault. (DLR)
   do_input()
        - Add finished parameter, used to indicate when we run or try to
          run a function associated with a shortcut. (DLR)
index 4ecbddc7b2bfa0b6ed329f6ff69c64d170a8c4b8..aa0be72fbdec6dacc18928869bbf0e001b226a64 100644 (file)
@@ -2958,14 +2958,19 @@ void do_justify(bool full_justify)
         * is the start of this paragraph if we're in one, or the start
         * of the next otherwise.  Save the quote length and paragraph
         * length (number of lines).  Don't refresh the screen yet,
-        * since we'll do that after we justify.  If the search
-        * failed, we're justifying the whole file, and the search
-        * didn't leave us on the last line of the file, set the last
-        * line of the text to be justified to the last line of the file
-        * and break out of the loop.  Otherwise, refresh the screen and
-        * get out. */
+        * since we'll do that after we justify.
+        *
+        * If the search failed, we do one of two things.  If we're
+        * justifying the whole file, we've found at least one
+        * paragraph, and the search didn't leave us on the last line of
+        * the file, it means that we should justify all the way to the
+        * last line of the file, so set the last line of the text to be
+        * justified to the last line of the file and break out of the
+        * loop.  Otherwise, it means that there are no paragraph(s) to
+        * justify, so refresh the screen and get out. */
        if (!find_paragraph(&quote_len, &par_len)) {
-           if (full_justify && first_par_line != filebot) {
+           if (full_justify && first_par_line != NULL &&
+               first_par_line != filebot) {
                last_par_line = filebot;
                break;
            } else {