emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r117638: Merge from emacs-24; up to r117423


From: Glenn Morris
Subject: [Emacs-diffs] trunk r117638: Merge from emacs-24; up to r117423
Date: Sun, 03 Aug 2014 20:34:58 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117638 [merge]
revision-id: address@hidden
parent: address@hidden
parent: address@hidden
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Sun 2014-08-03 16:34:33 -0400
message:
  Merge from emacs-24; up to r117423
modified:
  lisp/calendar/todo-mode.el     todos.el-20120911155047-0ytqo2nidwqquefa-1
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/dired.c                    dired.c-20091113204419-o5vbwnq5f7feedwu-171
  src/xterm.c                    xterm.c-20091113204419-o5vbwnq5f7feedwu-244
  src/xterm.h                    xterm.h-20091113204419-o5vbwnq5f7feedwu-228
=== modified file 'lisp/calendar/todo-mode.el'
--- a/lisp/calendar/todo-mode.el        2014-07-28 09:39:09 +0000
+++ b/lisp/calendar/todo-mode.el        2014-08-03 20:34:33 +0000
@@ -5226,7 +5226,7 @@
 
 (defun todo--user-error-if-marked-done-item ()
   "Signal user error on marked done items.
-Helper funtion for editing commands that only apply to (possibly
+Helper function for editing commands that apply only to (possibly
 marked) not done todo items."
   (save-excursion
     (save-restriction

=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-08-03 15:38:52 +0000
+++ b/src/ChangeLog     2014-08-03 20:34:33 +0000
@@ -1,5 +1,16 @@
 2014-08-03  Paul Eggert  <address@hidden>
 
+       Fix bug with clang + directory_files_internal + GC (Bug#16986).
+       * dired.c (directory_files_internal): Use a volatile variable
+       to prevent the compiler from optimizing away all copies of a local.
+       I wonder how many other GC-related bugs like this lurk elsewhere?
+
+       Avoid 100% CPU utilization on ssh session exit (Bug#17691).
+       * xterm.h (struct x_display_info): New member 'connection'.
+       * xterm.c (x_term_init, x_delete_terminal): Set and use it,
+       so that x_delete_terminal has a file descriptor to pass to
+       delete_keyboard_wait_descriptor.
+
        Don't mishandle year-9999 dates (Bug#18176).
        * editfns.c (decode_time_components): Store an invalid timespec
        on overflow, instead of returning false, so that the caller can

=== modified file 'src/dired.c'
--- a/src/dired.c       2014-04-16 19:43:46 +0000
+++ b/src/dired.c       2014-08-03 20:34:33 +0000
@@ -150,6 +150,12 @@
   Lisp_Object w32_save = Qnil;
 #endif
 
+  /* Don't let the compiler optimize away all copies of DIRECTORY,
+     which would break GC; see Bug#16986.  Although this is required
+     only in the common case where GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS,
+     it shouldn't break anything in the other cases.  */
+  Lisp_Object volatile directory_volatile = directory;
+
   /* Because of file name handlers, these functions might call
      Ffuncall, and cause a GC.  */
   list = encoded_directory = dirfilename = Qnil;
@@ -325,6 +331,7 @@
     list = Fsort (Fnreverse (list),
                  attrs ? Qfile_attributes_lessp : Qstring_lessp);
 
+  (void) directory_volatile;
   RETURN_UNGCPRO (list);
 }
 

=== modified file 'src/xterm.c'
--- a/src/xterm.c       2014-07-30 04:03:45 +0000
+++ b/src/xterm.c       2014-08-03 20:34:33 +0000
@@ -10815,6 +10815,7 @@
 
   dpyinfo->name_list_element = Fcons (display_name, Qnil);
   dpyinfo->display = dpy;
+  dpyinfo->connection = ConnectionNumber (dpyinfo->display);
 
   /* Set the name of the terminal. */
   terminal->name = xlispstrdup (display_name);
@@ -11267,7 +11268,6 @@
 x_delete_terminal (struct terminal *terminal)
 {
   struct x_display_info *dpyinfo = terminal->display_info.x;
-  int connection = -1;
 
   /* Protect against recursive calls.  delete_frame in
      delete_terminal calls us back when it deletes our last frame.  */
@@ -11286,8 +11286,6 @@
      and dpyinfo->display was set to 0 to indicate that.  */
   if (dpyinfo->display)
     {
-      connection = ConnectionNumber (dpyinfo->display);
-
       x_destroy_all_bitmaps (dpyinfo);
       XSetCloseDownMode (dpyinfo->display, DestroyAll);
 
@@ -11329,11 +11327,12 @@
     }
 
   /* No more input on this descriptor.  */
-  if (connection != -1)
-    delete_keyboard_wait_descriptor (connection);
+  if (0 <= dpyinfo->connection)
+    delete_keyboard_wait_descriptor (dpyinfo->connection);
 
   /* Mark as dead. */
   dpyinfo->display = NULL;
+  dpyinfo->connection = -1;
   x_delete_display (dpyinfo);
   unblock_input ();
 }

=== modified file 'src/xterm.h'
--- a/src/xterm.h       2014-07-27 13:21:30 +0000
+++ b/src/xterm.h       2014-08-03 20:34:33 +0000
@@ -138,6 +138,9 @@
   /* This says how to access this display in Xlib.  */
   Display *display;
 
+  /* A connection number (file descriptor) for the display.  */
+  int connection;
+
   /* This is a cons cell of the form (NAME . FONT-LIST-CACHE).  */
   Lisp_Object name_list_element;
 


reply via email to

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