fix bug in do_justify() in a better way: add on_next_line flag, used to
indicate when we've moved to the next line after justifying the current
line, and only run the respacing routine when it's true; this keeps the
respacing routine from erroneously being run more than once on the same
line


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1840 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
diff --git a/src/nano.c b/src/nano.c
index dfa577a..8cc9481 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -2382,6 +2382,10 @@
 	/* When the paragraph gets modified, all lines from the changed
 	 * one down are stored in the cutbuffer.  We back up the
 	 * original to restore it later. */
+    int allow_respacing;
+	/* Whether we should change the spacing at the end of a line
+	 * after justifying it.  This should be TRUE whenever we move 
+	 * to the next line after justifying the current line. */
 
     /* We save these global variables to be restored if the user
      * unjustifies.  Note we don't need to save totlines. */
@@ -2440,6 +2444,11 @@
 	    int break_pos;
 		/* Where we will break the line. */
 
+	    /* We'll be moving to the next line after justifying the
+	     * current line in almost all cases, so allow changing the
+	     * spacing at the ends of justified lines by default. */
+	    allow_respacing = TRUE;
+
 	    indent_len = quote_len + indent_length(current->data +
 		quote_len);
 
@@ -2521,6 +2530,8 @@
 		}
 #endif
 		null_at(&current->data, break_pos);
+
+		/* Go to the next line. */
 		current = current->next;
 	    } else if (display_len < fill && par_len > 1) {
 		size_t next_line_len;
@@ -2570,9 +2581,11 @@
 		    totsize -= indent_len;
 		    current_y--;
 
-		    /* Don't go to the next line, since there isn't one
-		     * anymore.  Just continue the loop from here. */
-		    continue;
+		    /* Don't go to the next line.  Accordingly, don't
+		     * allow changing the spacing at the end of the
+		     * previous justified line, since we've already done
+		     * it once. */
+		    allow_respacing = FALSE;
 		} else {
 		    charmove(current->next->data + indent_len,
 			current->next->data + indent_len + break_pos + 1,
@@ -2587,13 +2600,14 @@
 		/* Go to the next line. */
 		current = current->next;
 
-	    /* If we've gone to the next line, the line we were on
-	     * before still exists, and it was not the last line of the
-	     * paragraph, add a space to the end of it to replace the
-	     * one removed or left out by justify_format().  If it was
-	     * the last line of the paragraph, and justify_format() left
-	     * a space on the end of it, remove the space. */
-	    if (current->prev != NULL) {
+	    /* We've moved to the next line after justifying the 
+	     * current line.  If the justified line was not the last
+	     * line of the paragraph, add a space to the end of it to
+	     * replace the one removed or left out by justify_format().
+	     * If it was the last line of the paragraph, and
+	     * justify_format() left a space on the end of it, remove
+	     * the space. */
+	    if (allow_respacing) {
 		size_t prev_line_len = strlen(current->prev->data);
 
 		if (par_len > 1) {