Author: rhs
Date: Thu Jun 19 17:22:19 2014
New Revision: 1603952

URL: http://svn.apache.org/r1603952
Log:
added assert for null event context; fixed pn_collector_pop to decref context 
prior to adding event back to the free list

Modified:
    qpid/proton/trunk/proton-c/src/engine/engine.c
    qpid/proton/trunk/proton-c/src/engine/event.c

Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1603952&r1=1603951&r2=1603952&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Thu Jun 19 17:22:19 2014
@@ -593,7 +593,7 @@ void pn_modified(pn_connection_t *connec
     pn_incref(endpoint);
   }
 
-  if (emit) {
+  if (emit && connection->transport) {
     pn_event_t *event = pn_collector_put(connection->collector, PN_TRANSPORT);
     if (event) {
       pn_event_init(event, connection->transport);

Modified: qpid/proton/trunk/proton-c/src/engine/event.c
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/event.c?rev=1603952&r1=1603951&r2=1603952&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/event.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/event.c Thu Jun 19 17:22:19 2014
@@ -130,14 +130,15 @@ bool pn_collector_pop(pn_collector_t *co
     collector->tail = NULL;
   }
 
-  event->next = collector->free_head;
-  collector->free_head = event;
-
+  // decref before adding to the free list
   if (event->context) {
     pn_decref(event->context);
     event->context = NULL;
   }
 
+  event->next = collector->free_head;
+  collector->free_head = event;
+
   return true;
 }
 
@@ -178,9 +179,9 @@ pn_event_t *pn_event(void)
 
 void pn_event_init(pn_event_t *event, void *context)
 {
+  assert(context);
   event->context = context;
-  if (event->context)
-    pn_incref(event->context);
+  pn_incref(event->context);
 }
 
 pn_event_type_t pn_event_type(pn_event_t *event)



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to