Page MenuHomePhabricator

elementary: Check for valid object before calling efl internal functions
Needs RevisionPublic

Authored by devilhorns on Jul 31 2018, 1:32 AM.

Details

Summary

This patch fixes an issue where NULL is passed to efl internal
functions. Before we can call evas_object_size_hint_combined_min_get
we need to check for a valid resize object.

This was discovered via elementary_test -to Box Homogeneous

ref T7030

Depends on D6701

Diff Detail

Repository
rEFL core/efl
Branch
devs/devilhorns/T7030
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 7120
devilhorns created this revision.Jul 31 2018, 1:32 AM

It seems that this patch has no reviewers specified. If you are unsure who can review your patch, please check this wiki page and see if anyone can be added: https://phab.enlightenment.org/w/maintainers_reviewers/

zmike added a comment.Jul 31 2018, 8:37 AM

I'm not seeing any errors related to this in the "Box Homogeneous" test. Is this the furthest up the stack that the issue can be resolved, or is it possible to block the sizing_eval altogether after invalidate?

Ugg, yea I can't reproduce this one now for some reason :( Should I just abandon this one then ?

devilhorns updated this revision to Diff 15996.Jul 31 2018, 9:46 AM
devilhorns edited the summary of this revision. (Show Details)
This comment was removed by devilhorns.

No, leave it up for a bit and maybe you or someone else will see it again.

Hermet requested changes to this revision.Jul 31 2018, 8:34 PM
Hermet added a subscriber: Hermet.

If here efl_invalidation is neccesary, It' s really serious at efl. We can't add all this kind of stupid exceptional handling.
It's hard to expect when we need to check efl_invalidated_get() in function. Even right moment. Whatever this may fix some errors, we should not do this.

This revision now requires changes to proceed.Jul 31 2018, 8:34 PM
zmike added a comment.Aug 1 2018, 6:50 AM

I disagree; I think it's important to avoid these calls where possible for both correctness and performance reasons.

With that said, a lot of these are like D6638 where there is a container widget manually triggering sizing_eval calls on subobject deletion. These containers should have the sizing_eval call blocked, which would avoid the need to add separate calls to every widget.