[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-24 r117421: Fix bug with clang + directory_files_int
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] emacs-24 r117421: Fix bug with clang + directory_files_internal + GC. |
Date: |
Sat, 02 Aug 2014 22:58:12 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 117421
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/16986
committer: Paul Eggert <address@hidden>
branch nick: emacs-24
timestamp: Sat 2014-08-02 15:58:09 -0700
message:
Fix bug with clang + directory_files_internal + GC.
* src/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?
modified:
src/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1438
src/dired.c dired.c-20091113204419-o5vbwnq5f7feedwu-171
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2014-08-02 21:31:18 +0000
+++ b/src/ChangeLog 2014-08-02 22:58:09 +0000
@@ -1,5 +1,10 @@
2014-08-02 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,
=== modified file 'src/dired.c'
--- a/src/dired.c 2014-04-16 13:27:28 +0000
+++ b/src/dired.c 2014-08-02 22:58:09 +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);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-24 r117421: Fix bug with clang + directory_files_internal + GC.,
Paul Eggert <=