diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2011-08-04 19:19:34 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2011-08-04 19:19:34 -0700 |
commit | 999b5ecfddc7b442a23d8618195b67303b33d141 (patch) | |
tree | 687b3b12760ec62bf5866db20404a364e1b839ad /src/alloc.c | |
parent | f643a17df7e99293d62167bd1ec65b78990e7008 (diff) | |
parent | 992d4d7eee6086b250391c9d266571770112a4a0 (diff) | |
download | emacs-999b5ecfddc7b442a23d8618195b67303b33d141.tar.gz |
Merge from trunk.
Diffstat (limited to 'src/alloc.c')
-rw-r--r-- | src/alloc.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/alloc.c b/src/alloc.c index a1af0df11f0..2d256800466 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -24,7 +24,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include <signal.h> -#ifdef HAVE_GTK_AND_PTHREAD +#ifdef HAVE_PTHREAD #include <pthread.h> #endif @@ -85,13 +85,15 @@ extern size_t __malloc_extra_blocks; #endif /* not DOUG_LEA_MALLOC */ #if ! defined SYSTEM_MALLOC && ! defined SYNC_INPUT -#ifdef HAVE_GTK_AND_PTHREAD +#ifdef HAVE_PTHREAD /* When GTK uses the file chooser dialog, different backends can be loaded dynamically. One such a backend is the Gnome VFS backend that gets loaded if you run Gnome. That backend creates several threads and also allocates memory with malloc. + Also, gconf and gsettings may create several threads. + If Emacs sets malloc hooks (! SYSTEM_MALLOC) and the emacs_blocked_* functions below are called from malloc, there is a chance that one of these threads preempts the Emacs main thread and the hook variables @@ -123,12 +125,12 @@ static pthread_mutex_t alloc_mutex; } \ while (0) -#else /* ! defined HAVE_GTK_AND_PTHREAD */ +#else /* ! defined HAVE_PTHREAD */ #define BLOCK_INPUT_ALLOC BLOCK_INPUT #define UNBLOCK_INPUT_ALLOC UNBLOCK_INPUT -#endif /* ! defined HAVE_GTK_AND_PTHREAD */ +#endif /* ! defined HAVE_PTHREAD */ #endif /* ! defined SYSTEM_MALLOC && ! defined SYNC_INPUT */ /* Mark, unmark, query mark bit of a Lisp string. S must be a pointer @@ -1353,7 +1355,7 @@ emacs_blocked_realloc (void *ptr, size_t size, const void *ptr2) } -#ifdef HAVE_GTK_AND_PTHREAD +#ifdef HAVE_PTHREAD /* Called from Fdump_emacs so that when the dumped Emacs starts, it has a normal malloc. Some thread implementations need this as they call malloc before main. The pthread_self call in BLOCK_INPUT_ALLOC then @@ -1366,7 +1368,7 @@ reset_malloc_hooks (void) __malloc_hook = old_malloc_hook; __realloc_hook = old_realloc_hook; } -#endif /* HAVE_GTK_AND_PTHREAD */ +#endif /* HAVE_PTHREAD */ /* Called from main to set up malloc to use our hooks. */ @@ -1374,7 +1376,7 @@ reset_malloc_hooks (void) void uninterrupt_malloc (void) { -#ifdef HAVE_GTK_AND_PTHREAD +#ifdef HAVE_PTHREAD #ifdef DOUG_LEA_MALLOC pthread_mutexattr_t attr; @@ -1388,7 +1390,7 @@ uninterrupt_malloc (void) and the bundled gmalloc.c doesn't require it. */ pthread_mutex_init (&alloc_mutex, NULL); #endif /* !DOUG_LEA_MALLOC */ -#endif /* HAVE_GTK_AND_PTHREAD */ +#endif /* HAVE_PTHREAD */ if (__free_hook != emacs_blocked_free) old_free_hook = __free_hook; |