efl/src
Daniel Kolesa 9ca573f40f eo: fix UB in the eo event code (edje_cc hangs etc.)
Today I started experiencing mysterious hanging of edje_cc
during build. "The French are at it again" I thought, and
after spending a while bisecting, I found the culprit.
It's 7f53d91583.

So, what is happening in here?

The idea here was fundamentally sound; compute a special
hash value for event descriptors, taking range between 0
and 63 (on 64-bit systems) and 0 and 31 (on 32-bit systems),
then use a mask sized 32-bit or 64-bit (depending on your
system) and check early if to bail out from callback_call,
saving some resources. So far so good.

The problem is in the way the mask is handled. We're applying
the hash as the shift value like, `x |= (1 << hash)`. On 32-bit
systems this is okay, but on 64-bit systems, C's dumb silent
coercion rules kick in, since the left side of the expression
is 1, a literal with type signed int; that means our shifting
range is limited to 31 and what we get is... undefined behavior.

This is obviously not what we want, so take a 1ULL value as a
base. The previous thing seemingly worked on x86_64 (nobody
reported any issues) and interestingly it worked for me too
for a while (on ppc64le), but undefined behavior can be
unpredictable, so...

This shouldn't need a commit message as long as this, but I'm
making it proportional to the amount of time I wasted on this.
2019-11-14 04:18:46 +01:00
..
benchmarks benchmarks/eina: fix possible div by zero in ecore_hash 2019-10-18 13:29:07 -04:00
bin csharp: Add conversion methods for generated types 2019-11-13 10:05:19 -03:00
bindings csharp: Some missing conversions 2019-11-13 10:05:27 -03:00
edje_external
examples efl_ui_relative_container: rename relative_layout 2019-11-12 14:33:13 +01:00
generic evas - rsvg loader - comment out deprecated func from rsvg we don't need 2019-09-16 01:47:05 +01:00
lib eo: fix UB in the eo event code (edje_cc hangs etc.) 2019-11-14 04:18:46 +01:00
modules wl_egl : Prevent access to NULL pointer 2019-11-13 13:42:16 +09:00
scripts Pyolian: correctly define c_type as a property 2019-10-11 08:18:20 +02:00
static_libs meson: redo evas building 2019-10-29 12:54:56 -04:00
tests efl: improve Efl.BooleanModel test by checking the child del case. 2019-11-13 21:16:22 +01:00
wayland_protocol