this MIGHT fix T45 but i can't reproduce to confirm, but reading a
backtrace indicates this could have been the issue. it looks like
there is room for a dangling pointer anyway, so fix.
stable release - cherry-pick me!
const char *tmp;
/* destroy old state */
- if (monitor->exist) eio_file_cancel(monitor->exist);
+ if (monitor->exist)
+ {
+ eio_file_cancel(monitor->exist);
+ monitor->exist = NULL;
+ }
if (monitor->backend)
{
eina_stringshare_del(tmp);
/* That means death (cmp pointer and not content) */
+ /* this - i think, is wrong. if the paths are the same, we should just
+ * re-stat anyway. imagine the file was renamed and then replaced?
+ * disable this as this was part of a possible crash due to eio.
if (tmp == monitor->path)
{
_eio_monitor_error(monitor, -1);
return;
}
+ */
EINA_REFCOUNT_REF(monitor); /* as we spawn a thread for this monitor, we need to refcount specifically for it */