stop leaking every ecore system signal event.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 13 Apr 2012 15:44:02 +0000 (15:44 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 13 Apr 2012 15:44:02 +0000 (15:44 +0000)
People, when you go and change ecore_event_add() to
_ecore_event_add(), please NOTICE THAT THE FREE FUNCTION IS NOT
AUTOMATICALLY SPECIFIED!

So specify these functions to _ecore_event_add() to stop leaking every
signal we receive from system.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@70177 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
src/lib/ecore/ecore_signal.c

index 6445ca6..6c54ebb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 
        * remove EAPI from _ecore_event_signal_user_new(). It should never
        be exported outside of libecore.so
+       * stop leaking every system signal event.
index 78edb8c..57df027 100644 (file)
@@ -133,6 +133,13 @@ _ecore_signal_count_get(void)
    return sig_count;
 }
 
+static void
+_ecore_signal_generic_free(void *data __UNUSED__,
+                           void *event)
+{
+   free(event);
+}
+
 void
 _ecore_signal_call(void)
 {
@@ -248,7 +255,8 @@ _ecore_signal_call(void)
              if ((n < MAXSIGQ) && (sigusr1_info[n].si_signo))
                e->data = sigusr1_info[n];
 
-             _ecore_event_add(ECORE_EVENT_SIGNAL_USER, e, NULL, NULL);
+             _ecore_event_add(ECORE_EVENT_SIGNAL_USER, e,
+                              _ecore_signal_generic_free, NULL);
           }
         sig_count--;
      }
@@ -269,7 +277,8 @@ _ecore_signal_call(void)
              if ((n < MAXSIGQ) && (sigusr2_info[n].si_signo))
                e->data = sigusr2_info[n];
 
-             _ecore_event_add(ECORE_EVENT_SIGNAL_USER, e, NULL, NULL);
+             _ecore_event_add(ECORE_EVENT_SIGNAL_USER, e,
+                              _ecore_signal_generic_free, NULL);
           }
         sig_count--;
      }
@@ -288,7 +297,8 @@ _ecore_signal_call(void)
              if ((n < MAXSIGQ) && (sighup_info[n].si_signo))
                e->data = sighup_info[n];
 
-             _ecore_event_add(ECORE_EVENT_SIGNAL_HUP, e, NULL, NULL);
+             _ecore_event_add(ECORE_EVENT_SIGNAL_HUP, e,
+                              _ecore_signal_generic_free, NULL);
           }
         sig_count--;
      }
@@ -309,7 +319,8 @@ _ecore_signal_call(void)
              if ((n < MAXSIGQ) && (sigquit_info[n].si_signo))
                e->data = sigquit_info[n];
 
-             _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e, NULL, NULL);
+             _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
+                              _ecore_signal_generic_free, NULL);
           }
         sig_count--;
      }
@@ -330,7 +341,8 @@ _ecore_signal_call(void)
              if ((n < MAXSIGQ) && (sigint_info[n].si_signo))
                e->data = sigint_info[n];
 
-             _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e, NULL, NULL);
+             _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
+                              _ecore_signal_generic_free, NULL);
           }
         sig_count--;
      }
@@ -351,7 +363,8 @@ _ecore_signal_call(void)
              if ((n < MAXSIGQ) && (sigterm_info[n].si_signo))
                e->data = sigterm_info[n];
 
-             _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e, NULL, NULL);
+             _ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e,
+                              _ecore_signal_generic_free, NULL);
           }
         sig_count--;
      }
@@ -371,7 +384,8 @@ _ecore_signal_call(void)
              if ((n < MAXSIGQ) && (sigpwr_info[n].si_signo))
                e->data = sigpwr_info[n];
 
-             _ecore_event_add(ECORE_EVENT_SIGNAL_POWER, e, NULL, NULL);
+             _ecore_event_add(ECORE_EVENT_SIGNAL_POWER, e,
+                              _ecore_signal_generic_free, NULL);
           }
         sig_count--;
      }