]> git.wh0rd.org Git - nano.git/commitdiff
fix for the totsize / cut bug
authorRobert Siemborski <rjs3@andrew.cmu.edu>
Fri, 9 Jun 2000 00:52:26 +0000 (00:52 +0000)
committerRobert Siemborski <rjs3@andrew.cmu.edu>
Fri, 9 Jun 2000 00:52:26 +0000 (00:52 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@16 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

BUGS
cut.c
winio.c

diff --git a/BUGS b/BUGS
index 9a4fcd61098ce5712a3ed7a4b22a81baccf0e626..fc43cf2fc1963e727dc308623f3f428ddd3174ea 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -32,3 +32,8 @@
   until a pageup/down occurs (22).
 - edit_refresh() and update_line() (and related functions), have 
   trouble when a tab is the character that is the boundry at COLS (23)
+- there is an off-by-one error in keeping track of totsize.  It is caused
+  by the fact that we count the newline at the end when we read in a file
+  but we do not, in fact, display this newline.  This should go away
+  implicitly when the "Magic Line" returns, but it is noted here for
+  documentation's sake. (24)
diff --git a/cut.c b/cut.c
index 24b0b32acb7d99a814978f8930cd4f5dd40913bd..3a3cf65370be5b6ca9b65ee9223340b3029b4f7b 100644 (file)
--- a/cut.c
+++ b/cut.c
@@ -44,7 +44,7 @@ void add_to_cutbuffer(filestruct * inptr)
            inptr->data);
 #endif
 
-    totsize -= strlen(inptr->data) + 1;
+    totsize -= strlen(inptr->data);
     tmp = cutbuffer;
     if (cutbuffer == NULL) {
        cutbuffer = inptr;
@@ -82,6 +82,7 @@ void cut_marked_segment(filestruct * top, int top_x, filestruct * bot,
        next = tmp->next;
        add_to_cutbuffer(tmp);
        totlines--;
+       totsize--; /* newline (add_to_cutbuffer doesn't count newlines) */
        tmp = next;
     }
     while (next != bot && next != NULL);
@@ -101,7 +102,8 @@ void cut_marked_segment(filestruct * top, int top_x, filestruct * bot,
     next = bot->next;
 
     /* We explicitly don't decrement totlines here because we don't snarf
-     * up a newline when we're grabbing the last line of the mark */
+     * up a newline when we're grabbing the last line of the mark.  For
+     * the same reason we don't do an extra totsize decrement */
 
     add_to_cutbuffer(bot);
     top->next = next;
@@ -183,7 +185,7 @@ int do_cut_text(void)
        UNSET(MARK_ISSET);
        marked_cut = 1;
        set_modified();
-       edit_update_top(edittop);
+       edit_update(current);
        return 1;
 #else
     if (0) {
@@ -201,10 +203,9 @@ int do_cut_text(void)
            current = fileptr;
        } else {
            add_to_cutbuffer(fileptr);
-           totlines--;
            fileage = make_new_node(NULL);
            fileage->data = nmalloc(1);
-           strcpy(fileage->data, "");
+           fileage->data[0] = '\0';
            current = fileage;
        }
     } else {
diff --git a/winio.c b/winio.c
index 784b9734b65237e0061a03489f23ba712d0d2f95..96a1e0e15f47fd670fc361e690e8d7ed9d34c7d7 100644 (file)
--- a/winio.c
+++ b/winio.c
@@ -1066,11 +1066,6 @@ int do_cursorpos(void)
     for (fileptr = current->next; fileptr != NULL; fileptr = fileptr->next)
        tot += strlen(fileptr->data) + 1;
 
-    /* FIXME - This is gardly elegant */
-/*    if (current == fileage && strlen(current->data) == 0)
-       i = 0;
-*/
-
     if (totlines > 0)
        linepct = 100 * current->lineno / totlines;
     else