summaryrefslogtreecommitdiff
path: root/src/lib/eo
diff options
context:
space:
mode:
authorMarcel Hollerbach <marcel-hollerbach@t-online.de>2017-05-04 20:22:06 +0200
committerMarcel Hollerbach <marcel-hollerbach@t-online.de>2017-05-04 20:44:42 +0200
commit5b8421c550da369162e23df70c4b62a77358ffc8 (patch)
tree55cb02c5611df38d63d51496c9d9c02f76cbfe05 /src/lib/eo
parent3633bb4f5e72612a74bf9e80cebe720700ae1f1c (diff)
eo: fix missing event emission
There have been cases where the logic of _event_callback_call break'ed too early in the event submission. Reason for that was the line ((const unsigned char *) desc - (const unsigned char *) it->desc) producing a overflow. This means the if statement if (!legacy_compare && ((const unsigned char *) desc - (const unsigned char *) it->desc) < 0) was true while the pointer desc was smaller than it->desc, which means the event subscription got aborted, even if it should not. This turned out on two 32 bit maschines. And led to not rendering apps anymore. It was introduced by commit in 605fec91ee7. @fix
Diffstat (limited to 'src/lib/eo')
-rw-r--r--src/lib/eo/eo_base_class.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c
index 18c25bfc4d..6d05aed81d 100644
--- a/src/lib/eo/eo_base_class.c
+++ b/src/lib/eo/eo_base_class.c
@@ -1460,7 +1460,7 @@ restart_back:
1460 { 1460 {
1461 // Array callbacks are sorted, break if we are getting to high. 1461 // Array callbacks are sorted, break if we are getting to high.
1462 if (!legacy_compare && 1462 if (!legacy_compare &&
1463 ((const unsigned char *) desc - (const unsigned char *) it->desc) < 0) 1463 ((const unsigned char *) desc < (const unsigned char *) it->desc))
1464 break; 1464 break;
1465 if (!_cb_desc_match(it->desc, desc, legacy_compare)) 1465 if (!_cb_desc_match(it->desc, desc, legacy_compare))
1466 continue; 1466 continue;