diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2016-12-21 09:52:28 -0800 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2016-12-21 09:57:05 -0800 |
commit | cf6ce9a1fe320ebe5b238af5f7af9416ac954855 (patch) | |
tree | 492441277954ab7829df6ce9920986ebb9855f6e | |
parent | 8661313efd5fd5b0a27fe82f276a1ff862646424 (diff) | |
download | emacs-cf6ce9a1fe320ebe5b238af5f7af9416ac954855.tar.gz |
Port dumping better to WSL
Problem reported by Angelo Graziosi in:
http://lists.gnu.org/archive/html/emacs-devel/2016-12/msg00822.html
* src/sysdep.c (disable_address_randomization):
Detect buggy platforms where 'personality' always returns 0.
-rw-r--r-- | src/sysdep.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/sysdep.c b/src/sysdep.c index 96c9e538409..86d420f66c4 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -144,11 +144,16 @@ static const int baud_convert[] = bool disable_address_randomization (void) { - bool disabled = false; int pers = personality (0xffffffff); - disabled = (! (pers & ADDR_NO_RANDOMIZE) - && 0 <= personality (pers | ADDR_NO_RANDOMIZE)); - return disabled; + if (pers < 0) + return false; + int desired_pers = pers | ADDR_NO_RANDOMIZE; + + /* Call 'personality' twice, to detect buggy platforms like WSL + where 'personality' always returns 0. */ + return (pers != desired_pers + && personality (desired_pers) == pers + && personality (0xffffffff) == desired_pers); } #endif |