diff options
Diffstat (limited to '')
-rw-r--r-- | libraries/eina/src/lib/eina_mmap.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libraries/eina/src/lib/eina_mmap.c b/libraries/eina/src/lib/eina_mmap.c index fb27bd7..7929f0e 100644 --- a/libraries/eina/src/lib/eina_mmap.c +++ b/libraries/eina/src/lib/eina_mmap.c | |||
@@ -110,6 +110,8 @@ _eina_mmap_safe_sigbus(int sig __UNUSED__, | |||
110 | errno = perrno; | 110 | errno = perrno; |
111 | abort(); | 111 | abort(); |
112 | } | 112 | } |
113 | /* Look into mmaped Eina_File if it was one of them, just to remember for later request */ | ||
114 | eina_file_mmap_faulty(addr, _eina_mmap_pagesize); | ||
113 | /* restore previous errno */ | 115 | /* restore previous errno */ |
114 | errno = perrno; | 116 | errno = perrno; |
115 | } | 117 | } |
@@ -162,6 +164,9 @@ eina_mmap_safety_enabled_set(Eina_Bool enabled) | |||
162 | sa.sa_sigaction = _eina_mmap_safe_sigbus; | 164 | sa.sa_sigaction = _eina_mmap_safe_sigbus; |
163 | sa.sa_flags = SA_RESTART | SA_SIGINFO; | 165 | sa.sa_flags = SA_RESTART | SA_SIGINFO; |
164 | sigemptyset(&sa.sa_mask); | 166 | sigemptyset(&sa.sa_mask); |
167 | /* FIXME: This is rubbish. We return EINA_FALSE whether sigaction | ||
168 | * fails or not. And we never set mmap_safe, so we always hit this | ||
169 | * code path. */ | ||
165 | if (sigaction(SIGBUS, &sa, NULL) == 0) return EINA_FALSE; | 170 | if (sigaction(SIGBUS, &sa, NULL) == 0) return EINA_FALSE; |
166 | /* setup of SIGBUS handler failed, lets close zero page dev and fail */ | 171 | /* setup of SIGBUS handler failed, lets close zero page dev and fail */ |
167 | close(_eina_mmap_zero_fd); | 172 | close(_eina_mmap_zero_fd); |