summaryrefslogtreecommitdiff
path: root/editors/mule/patches/patch-src_alloc_c
blob: 911c27cd5f51dae05d2777374c489f509c72677b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
$NetBSD: patch-src_alloc_c,v 1.1 2011/12/24 13:30:33 dholland Exp $

- add an empty asm() destroying memory that prevents gcc from
  optimizing out __malloc_hook and friends (which leads to
  SIGSEGV in temacs during build)

--- src/alloc.c~	1994-10-24 11:37:41.000000000 +0000
+++ src/alloc.c
@@ -240,6 +240,9 @@ emacs_blocked_free (ptr)
 {
   BLOCK_INPUT;
   __free_hook = old_free_hook;
+#ifdef __GNUC__
+  __asm __volatile("":::"memory");
+#endif
   free (ptr);
   __free_hook = emacs_blocked_free;
   UNBLOCK_INPUT;
@@ -253,6 +256,9 @@ emacs_blocked_malloc (size)
 
   BLOCK_INPUT;
   __malloc_hook = old_malloc_hook;
+#ifdef __GNUC__
+  __asm __volatile("":::"memory");
+#endif
   value = (void *) malloc (size);
   __malloc_hook = emacs_blocked_malloc;
   UNBLOCK_INPUT;
@@ -269,6 +275,9 @@ emacs_blocked_realloc (ptr, size)
 
   BLOCK_INPUT;
   __realloc_hook = old_realloc_hook;
+#ifdef __GNUC__
+  __asm __volatile("":::"memory");
+#endif
   value = (void *) realloc (ptr, size);
   __realloc_hook = emacs_blocked_realloc;
   UNBLOCK_INPUT;