aboutsummaryrefslogtreecommitdiffstats
path: root/src/gmalloc.c
diff options
context:
space:
mode:
authorNoam Postavsky2017-10-31 13:31:46 -0400
committerNoam Postavsky2017-11-04 18:49:28 -0400
commit918a2dda07ebf16601a93d0464f62c4e846d8b39 (patch)
treef98b930dcbcfb83608c38d949254dabaeeddaec9 /src/gmalloc.c
parent725ab635d9c4c0ecbd4b28df16d2b97337bbe989 (diff)
downloademacs-918a2dda07ebf16601a93d0464f62c4e846d8b39.tar.gz
emacs-918a2dda07ebf16601a93d0464f62c4e846d8b39.zip
Use hybrid malloc for FreeBSD (Bug#28308)
FreeBSD aarch64 does not provide sbrk, so gmalloc cannot be used; when using system malloc dumping does not work correctly (allocated data is invalid after dumping). * configure.ac: Set hybrid_malloc for freebsd. * src/gmalloc.c (gdefault_morecore) [!HAVE_SBRK]: Don't call sbrk.
Diffstat (limited to 'src/gmalloc.c')
-rw-r--r--src/gmalloc.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/gmalloc.c b/src/gmalloc.c
index 2bda95ebd3d..a17d39c1eeb 100644
--- a/src/gmalloc.c
+++ b/src/gmalloc.c
@@ -1502,17 +1502,18 @@ extern void *__sbrk (ptrdiff_t increment);
1502static void * 1502static void *
1503gdefault_morecore (ptrdiff_t increment) 1503gdefault_morecore (ptrdiff_t increment)
1504{ 1504{
1505 void *result;
1506#ifdef HYBRID_MALLOC 1505#ifdef HYBRID_MALLOC
1507 if (!DUMPED) 1506 if (!DUMPED)
1508 { 1507 {
1509 return bss_sbrk (increment); 1508 return bss_sbrk (increment);
1510 } 1509 }
1511#endif 1510#endif
1512 result = (void *) __sbrk (increment); 1511#ifdef HAVE_SBRK
1513 if (result == (void *) -1) 1512 void *result = (void *) __sbrk (increment);
1514 return NULL; 1513 if (result != (void *) -1)
1515 return result; 1514 return result;
1515#endif
1516 return NULL;
1516} 1517}
1517 1518
1518void *(*__morecore) (ptrdiff_t) = gdefault_morecore; 1519void *(*__morecore) (ptrdiff_t) = gdefault_morecore;