]> git.wh0rd.org Git - nano.git/commitdiff
avoid any more editbot-related segfaults by removing the last of the
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Fri, 19 Mar 2004 02:15:42 +0000 (02:15 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Fri, 19 Mar 2004 02:15:42 +0000 (02:15 +0000)
references to it, as in DB's patch

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

ChangeLog
src/files.c
src/global.c
src/nano.c
src/proto.h
src/winio.c

index aee6135999d167d06dbe12c1ea37b64e99b7f4ab..60e50c8d7145cdb2dd8ec438e2757599f38411ad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -38,6 +38,9 @@ CVS code -
          pointing to a different memory block, there will be a segfault
          when the value of def is copied into it via strcpy(). (bort,
          Christian Weisgarber, David Benbennick, and DLR)
+       - Remove the last editbot references, to avoid any potential
+         segfaults related to them.  Also remove fix_editbot(), as it's
+         no longer needed. (David Benbennick)
 - files.c:
   do_insertfile()
        - Wrap one reference to NANO_EXTCMD_KEY in a NANO_SMALL #ifdef.
index f346f49956c09be85329ef99bb5ca601267f4e22..31c4a54dc3d9b0efc19a1ad0572c997f6194b985 100644 (file)
@@ -75,7 +75,6 @@ void new_file(void)
     fileage->data[0] = '\0';
     filebot = fileage;
     edittop = fileage;
-    editbot = fileage;
     current = fileage;
     current_x = 0;
     totlines = 1;
@@ -592,9 +591,6 @@ int do_insertfile(int loading_file)
 #endif
            set_modified();
 
-       /* Here we want to rebuild the edit window */
-       fix_editbot();
-
 #ifdef ENABLE_MULTIBUFFER
        /* If we've loaded another file, update the titlebar's contents */
        if (loading_file) {
@@ -618,10 +614,7 @@ int do_insertfile(int loading_file)
 #endif
 
        /* If we've gone off the bottom, recenter; otherwise, just redraw */
-       if (current->lineno > editbot->lineno)
-           edit_update(current, CENTER);
-       else
-           edit_refresh();
+       edit_refresh();
 
     } else {
        statusbar(_("Cancelled"));
index 435eaea49d4d174f0fce730c7cf71f5097a5966c..fa524fab9135e990daa1de5d535fac789cb63e20 100644 (file)
@@ -59,7 +59,6 @@ filestruct *fileage = NULL;   /* Our file buffer */
 filestruct *edittop = NULL;    /* Pointer to the top of the edit
                                   buffer with respect to the
                                   file struct */
-filestruct *editbot = NULL;    /* Same for the bottom */
 filestruct *filebot = NULL;    /* Last node in the file struct */
 filestruct *cutbuffer = NULL;  /* A place to store cut text */
 
index 268d473e251ce07643e3e344da81dbb55895aa78..a8e184842a2da31edec0b896d310456640f3f114 100644 (file)
@@ -202,7 +202,6 @@ void global_init(int save_cutbuffer)
        cutbuffer = NULL;
     current = NULL;
     edittop = NULL;
-    editbot = NULL;
     totlines = 0;
     totsize = 0;
     placewewant = 0;
@@ -961,10 +960,8 @@ void do_char(char ch)
 
     /* When a character is inserted on the current magicline, it means
      * we need a new one! */
-    if (filebot == current) {
+    if (filebot == current)
        new_magicline();
-       fix_editbot();
-    }
 
     /* More dangerousness fun =) */
     current->data = charealloc(current->data, current_len + 2);
@@ -1064,10 +1061,8 @@ int do_delete(void)
        strcat(current->data, current->next->data);
 
        foo = current->next;
-       if (filebot == foo) {
+       if (filebot == foo)
            filebot = current;
-           editbot = current;
-       }
 
        unlink_node(foo);
        delete_node(foo);
@@ -1132,10 +1127,8 @@ int do_enter(void)
     }
     *tmp = '\0';
 
-    if (current->next == NULL) {
+    if (current->next == NULL)
        filebot = newnode;
-       editbot = newnode;
-    }
     splice_node(current, newnode, current->next);
 
     totsize++;
@@ -2444,7 +2437,6 @@ int do_justify(void)
     int flags_save = flags;
     long totsize_save = totsize;
     filestruct *edittop_save = edittop;
-    filestruct *editbot_save = editbot;
 #ifndef NANO_SMALL
     filestruct *mark_beginbuf_save = mark_beginbuf;
     int mark_beginx_save = mark_beginx;
@@ -2675,7 +2667,6 @@ int do_justify(void)
        current_x = current_x_save;
        current_y = current_y_save;
        edittop = edittop_save;
-       editbot = editbot_save;
        if (first_mod_line != NULL) {
            filestruct *cutbottom = get_cutbottom();
 
@@ -2940,16 +2931,6 @@ void handle_sigwinch(int s)
 #endif                         /* HAVE_WRESIZE */
 #endif                         /* HAVE_RESIZETERM */
 
-    fix_editbot();
-
-    if (current_y > editwinrows - 1)
-       edit_update(editbot, CENTER);
-    erase();
-
-    /* Do these because width may have changed. */
-    refresh();
-    titlebar(NULL);
-    edit_refresh();
     display_main_list();
     blank_statusbar();
     total_refresh();
@@ -3014,7 +2995,6 @@ void do_toggle(const toggle *which)
        wclear(bottomwin);
        wrefresh(bottomwin);
        window_init();
-       fix_editbot();
        edit_refresh();
        display_main_list();
        break;
index d0cb35a326cdf1f5b8e910e266f956b5f06eedab..1c2033ecf438f4cdc6c87e0a49e47a8f70dac71e 100644 (file)
@@ -74,7 +74,7 @@ extern char *alt_speller;
 
 extern int resetstatuspos;
 extern struct stat fileinfo;
-extern filestruct *current, *fileage, *edittop, *editbot, *filebot; 
+extern filestruct *current, *fileage, *edittop, *filebot;
 extern filestruct *cutbuffer;
 #ifndef NANO_SMALL
 extern filestruct *mark_beginbuf;
@@ -517,7 +517,6 @@ int do_cursorpos_void(void);
 int line_len(const char *ptr);
 int do_help(void);
 void do_replace_highlight(int highlight_flag, const char *word);
-void fix_editbot(void);
 #ifdef DEBUG
 void dump_buffer(const filestruct *inptr);
 void dump_buffer_reverse(void);
index 01484ef57767f516c3d98a1fe497ac0c9cd7c776..55bfd291930e0482f8f8dd8aa60c6b1ebaf11696 100644 (file)
@@ -2491,16 +2491,6 @@ void do_replace_highlight(int highlight_flag, const char *word)
        wattroff(edit, A_REVERSE);
 }
 
-/* Fix editbot, based on the assumption that edittop is correct. */
-void fix_editbot(void)
-{
-    int i;
-
-    editbot = edittop;
-    for (i = 0; i < editwinrows && editbot->next != NULL; i++)
-       editbot = editbot->next;
-}
-
 #ifdef DEBUG
 /* Dump the passed-in file structure to stderr. */
 void dump_buffer(const filestruct *inptr)