port mmap safety fix to efl tree.

SVN revision: 77115
This commit is contained in:
Carsten Haitzler 2012-09-27 03:46:03 +00:00
parent 8d28445b80
commit fbfb3ec61a
3 changed files with 16 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2012-09-27 Carsten Haitzler (The Rasterman)
* Fix return value of eina_mmap_safety_enabled_set() and
ensure future eina_mmap_safety_enabled_get() return right value
on success.
2012-09-21 Carsten Haitzler (The Rasterman)
* Fix big endian bug with eet image handling and endianess swapping.

3
NEWS
View File

@ -3,6 +3,7 @@ EFL 1.8.0
=========
Changes since 1.7.0:
--------------------
Additions:
* Add DOCTYPE children parsing in eina_simple_xml
@ -14,3 +15,5 @@ Improvements:
Fixes:
* Fix PPC (big endian) image codec bug.
* Fix return value of eina_mmap_safety_enabled_set() and future
eina_mmap_safety_enabled_get() returns after success

View File

@ -164,10 +164,7 @@ eina_mmap_safety_enabled_set(Eina_Bool enabled)
sa.sa_sigaction = _eina_mmap_safe_sigbus;
sa.sa_flags = SA_RESTART | SA_SIGINFO;
sigemptyset(&sa.sa_mask);
/* FIXME: This is rubbish. We return EINA_FALSE whether sigaction
* fails or not. And we never set mmap_safe, so we always hit this
* code path. */
if (sigaction(SIGBUS, &sa, NULL) == 0) return EINA_FALSE;
if (sigaction(SIGBUS, &sa, NULL) == 0) goto done;
/* setup of SIGBUS handler failed, lets close zero page dev and fail */
close(_eina_mmap_zero_fd);
_eina_mmap_zero_fd = -1;
@ -176,8 +173,14 @@ eina_mmap_safety_enabled_set(Eina_Bool enabled)
else
{
/* reset signal handler to default for SIGBUS */
if (_eina_mmap_zero_fd >= 0)
{
close(_eina_mmap_zero_fd);
_eina_mmap_zero_fd = -1;
}
signal(SIGBUS, SIG_DFL);
}
done:
mmap_safe = enabled;
return mmap_safe;
#endif