Depends on D10288
May I inquire why you replace eina_stringshare_del with a NULL parametered eina_stringshare_replace? The former is very clear on what the code should do, delete the string, the latter requires much more thought to go about what this actually should do.
Replace does free and null pointer in one operation. It should be standard practice in any object that could live long enough to trigger code that might access this pointer (think other callbacks).
The unref can trigger asynchronous operation which could trigger access in other function where this pointer could be accessed. Seeing it to null before destroying it prefer this rogue access.
Same for the above one.
Indeed, didn't check the comment