]> git.wh0rd.org Git - nano.git/commitdiff
2009-12-20 Brian Szymanski <skibrianski via Savannah>
authorChris Allegretta <chrisa@asty.org>
Sun, 20 Dec 2009 05:46:35 +0000 (05:46 +0000)
committerChris Allegretta <chrisa@asty.org>
Sun, 20 Dec 2009 05:46:35 +0000 (05:46 +0000)
        * src/files.c (write_file): Check stat struct exists, and if not use just obtained stat data.
          Fixes Ubuntu bug 471568, "reproducible crash in nano on trying to save to a file
          different than the one specified on the command line".

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

ChangeLog
src/files.c

index bc082bf2a6e1d62029ce3d3603d5ac90b3680142..6a98054a1095b9e3f8a828b14dd2890a5a38fa90 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-20 Brian Szymanski <skibrianski via Savannah>
+       * src/files.c (write_file): Check stat struct exists, and if not use just obtained stat data.
+         Fixes Ubuntu bug 471568, "reproducible crash in nano on trying to save to a file 
+         different than the one specified on the command line".
+
 2009-12-15 Chris Allegretta <chrisa@asty.org>
        * doc/nanorc.sample.in - Remove erroneous 'set suspendenable' as it's actually a 
          key binding (e.g. 'bind M-Z suspendenable all') and not a settable flag.  Fixes
index 9b29a58ecce6e5225eff3003be55020e3312f556..1355d38055c0bec6cabcac27247d811641053d46 100644 (file)
@@ -1499,6 +1499,13 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
      * one). */
     realexists = (stat(realname, &st) != -1);
 
+    /* if we have not stat()d this file before (say, the user just
+     * specified it interactively), use the info we just got from
+     * stat()ing or else we will chase null pointers when we do
+     * modtime checks, preserve file times, etc. during backup */
+    if(openfile->current_stat == NULL)
+       openfile->current_stat = &st;
+
 #ifndef NANO_TINY
     /* We backup only if the backup toggle is set, the file isn't
      * temporary, and the file already exists.  Furthermore, if we