Free packet buffer outside of the dispatcher
authorDaniel Zaoui <daniel.zaoui@yahoo.com>
Wed, 15 Mar 2017 20:44:02 +0000 (22:44 +0200)
committerDaniel Zaoui <daniel.zaoui@yahoo.com>
Mon, 5 Jun 2017 05:55:36 +0000 (08:55 +0300)
src/lib/eina/eina_debug.c

index 51d854b..e1237c0 100644 (file)
@@ -610,6 +610,9 @@ _monitor(void *_data)
                                  // something we don't understand
                                  e_debug("EINA DEBUG ERROR: Unknown command");
                               }
+                            /* Free the buffer only if the default dispatcher is used */
+                            if (_session->dispatch_cb == eina_debug_dispatch)
+                               free(buffer);
                          }
                        else if (size == 0)
                          {
@@ -725,12 +728,7 @@ eina_debug_dispatch(Eina_Debug_Session *session, void *buffer)
 {
    Eina_Debug_Packet_Header *hdr = buffer;
    Eina_Debug_Error ret = EINA_DEBUG_OK;
-   if (hdr->thread_id == 0)
-     {
-        ret = _self_dispatch(session, buffer);
-        free(buffer);
-        return ret;
-     }
+   if (hdr->thread_id == 0) return _self_dispatch(session, buffer);
    else
      {
         int i, nb_calls = 0;
@@ -786,7 +784,6 @@ eina_debug_dispatch(Eina_Debug_Session *session, void *buffer)
                }
              eina_spinlock_release(&_eina_debug_thread_lock);
           }
-        free(buffer);
      }
    return ret;
 }