On 31/10/2019 19:53, Sergey Bylokhov wrote:
On 10/31/19 5:59 am, Pankaj Bansal wrote:
<< I guess that the problem is that the "image" is accessed w/o
synchronization on "this" like in other places, but it will be
necessary to add one null check before usage of "image".
I have updated the code to access image with synchronization. But
that does not solve the issue. So I have kept the null check also. I
tried to add the null check before calling getWidth, calling getWidth
still makes the image null. So the check before calling getHeight is
still required.
You need to read the image to the local var under synchronization and
then get W/H from the local image variable.
I guess in this case both W/H will be 0 since error is occured?
You're right! This approach seems to be easier to understand.
I think the current code can deadlock: we call image.getWidth() holding
the monitor of ImageView.this; ImageObserver (line 958) needs to lock
the monitor of ImageView.this to reset 'image' field to null if an error
occurred.
If an error occurs, width and height are set to -1.
--
Regards,
Alexey