nano-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Nano-devel] more potential line number problems on 64-bit machines (pat


From: David Lawrence Ramsey
Subject: [Nano-devel] more potential line number problems on 64-bit machines (patch)
Date: Thu, 07 Jul 2005 22:50:52 -0400
User-agent: Mozilla Thunderbird 1.0.2 (X11/20050317)

I just noticed that there are several places I missed in 1.3.8 where the line number is treated as an int instead of a ssize_t, most importantly in renumber(), do_alt_speller(), and backup_lines(). The attached patch against 1.3.8 should fix these.

diff -ur nano-1.3.8/src/nano.c nano/src/nano.c
--- nano-1.3.8/src/nano.c       2005-06-29 13:10:58.000000000 -0400
+++ nano/src/nano.c     2005-07-07 22:18:23.000000000 -0400
@@ -954,12 +954,12 @@
 void renumber_all(void)
 {
     filestruct *temp;
-    int i = 1;
+    ssize_t line = 1;
 
     assert(fileage == NULL || fileage != fileage->next);
 
     for (temp = fileage; temp != NULL; temp = temp->next)
-       temp->lineno = i++;
+       temp->lineno = line++;
 }
 
 void renumber(filestruct *fileptr)
@@ -967,12 +967,12 @@
     if (fileptr == NULL || fileptr->prev == NULL || fileptr == fileage)
        renumber_all();
     else {
-       int lineno = fileptr->prev->lineno;
+       ssize_t line = fileptr->prev->lineno;
 
        assert(fileptr != fileptr->next);
 
        for (; fileptr != NULL; fileptr = fileptr->next)
-           fileptr->lineno = ++lineno;
+           fileptr->lineno = ++line;
     }
 }
 
@@ -2317,9 +2322,9 @@
  * otherwise the error string. */
 const char *do_alt_speller(char *tempfile_name)
 {
-    int alt_spell_status, lineno_save = current->lineno;
+    int alt_spell_status;
     size_t current_x_save = current_x, pww_save = placewewant;
-    ssize_t current_y_save = current_y;
+    ssize_t current_y_save = current_y, lineno_save = current->lineno;
     pid_t pid_spell;
     char *ptr;
     static int arglen = 3;
@@ -3004,12 +3011,12 @@
     size_t i;
        /* Generic loop variable. */
     size_t current_x_save = current_x;
-    int fl_lineno_save = first_line->lineno;
-    int edittop_lineno_save = edittop->lineno;
-    int current_lineno_save = current->lineno;
+    ssize_t fl_lineno_save = first_line->lineno;
+    ssize_t edittop_lineno_save = edittop->lineno;
+    ssize_t current_lineno_save = current->lineno;
 #ifndef NANO_SMALL
     bool old_mark_set = ISSET(MARK_ISSET);
-    int mbb_lineno_save = 0;
+    ssize_t mbb_lineno_save = 0;
     size_t mark_beginx_save = 0;
 
     if (old_mark_set) {

reply via email to

[Prev in Thread] Current Thread [Next in Thread]