eo: Don't resolve function calls for NULL objects
authorJean-Philippe Andre <jp.andre@samsung.com>
Wed, 12 Jul 2017 01:43:07 +0000 (10:43 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Wed, 12 Jul 2017 02:20:59 +0000 (11:20 +0900)
eo_function(NULL) always leads to a no-operation. A this
point it is basically considered the normal operation
with EO to just silently ignore NULL errors.

If the API function "eo_function" belongs to a class that
has not been loaded yet (eg. no object of this type has
been created yet), then the op associated to the API func
may not be defined yet.

Fixes T5715

src/lib/eo/eo.c

index e4f767b..2345fd3 100644 (file)
@@ -691,8 +691,12 @@ _efl_object_api_op_id_get(const void *api_func)
 EAPI Efl_Object_Op
 _efl_object_op_api_id_get(const void *api_func, const Eo *obj, const char *api_func_name, const char *file, int line)
 {
-   Efl_Object_Op op = _efl_object_api_op_id_get_internal(api_func);
+   Efl_Object_Op op;
 
+#ifndef EO_DEBUG
+   if (!obj) return EFL_NOOP;
+#endif
+   op = _efl_object_api_op_id_get_internal(api_func);
    if (op == EFL_NOOP)
      {
         eina_log_print(_eo_log_dom, EINA_LOG_LEVEL_ERR,