It's hard to guess without the claimed path. What's your tools output?

But anyhow, just by looking at the code, it looks right.
On 14 Dec 2012 11:27, "Stefan Schmidt" <s.schm...@samsung.com> wrote:

> Hello.
>
> We have tons of reports from a static analyser here about the
> EO_DEFINE_CLASS macro. Actually in every place it is used. :)
>
> The analyser thinks that _my_lock.mutex is locked but not unlocked.
> I had a look at the code as well as cedric and we are both confused now. :)
>
> It would be great if someone else can have a look at this. Tom, Daniel?
>
> Its efl/src/lib/eo/Eo.h:190
>
> #define EO_DEFINE_CLASS(class_get_func_name, class_desc, parent_class,
> ...) \
> EAPI const Eo_Class * \
> class_get_func_name(void) \
> { \
>     const Eo_Class *_tmp_parent_class; \
>     static volatile char lk_init = 0; \
>     static Eina_Lock _my_lock; \
>     static const Eo_Class * volatile _my_class = NULL; \
>     if (EINA_LIKELY(!!_my_class)) return _my_class; \
>     \
>     eina_lock_take(&_eo_class_creation_lock); \
>     if (!lk_init) \
>        eina_lock_new(&_my_lock); \
>     if (lk_init < 2) eina_lock_take(&_my_lock); \
>     if (!lk_init) \
>        lk_init = 1; \
>     else \
>       { \
>          if (lk_init < 2) eina_lock_release(&_my_lock); \
>          eina_lock_release(&_eo_class_creation_lock); \
>          return _my_class; \
>       } \
>     eina_lock_release(&_eo_class_creation_lock); \
>     _tmp_parent_class = parent_class; \
>     _my_class = eo_class_new(class_desc, _tmp_parent_class, __VA_ARGS__); \
>     eina_lock_release(&_my_lock); \
>     \
>     eina_lock_take(&_eo_class_creation_lock); \
>     eina_lock_free(&_my_lock); \
>     lk_init = 2; \
>     eina_lock_release(&_eo_class_creation_lock); \
>     return _my_class; \
> }
>
> regards
> Stefan Schmidt
>
>
> ------------------------------------------------------------------------------
> LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
> Remotely access PCs and mobile devices and provide instant support
> Improve your efficiency, and focus on delivering more value-add services
> Discover what IT Professionals Know. Rescue delivers
> http://p.sf.net/sfu/logmein_12329d2d
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to