Repository: trafficserver Updated Branches: refs/heads/master 95afef8b2 -> 99c19a013
TS-2757: the Derefer should actually delete things Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/99c19a01 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/99c19a01 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/99c19a01 Branch: refs/heads/master Commit: 99c19a0139b14aaf94029baa4e269a95438325cf Parents: 95afef8 Author: James Peach <[email protected]> Authored: Wed May 21 15:48:15 2014 -0700 Committer: James Peach <[email protected]> Committed: Wed May 21 16:23:09 2014 -0700 ---------------------------------------------------------------------- iocore/eventsystem/P_Freer.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/99c19a01/iocore/eventsystem/P_Freer.h ---------------------------------------------------------------------- diff --git a/iocore/eventsystem/P_Freer.h b/iocore/eventsystem/P_Freer.h index 5575a01..b5f1591 100644 --- a/iocore/eventsystem/P_Freer.h +++ b/iocore/eventsystem/P_Freer.h @@ -107,14 +107,18 @@ new_Freer(void *ap, ink_hrtime t) template<class C> struct DereferContinuation: public Continuation { C *p; - int dieEvent(int event, Event * e) + + int dieEvent(int, Event *) { - (void) event; - (void) e; p->refcount_dec(); + if (REF_COUNT_OBJ_REFCOUNT_DEC(p) == 0) { + delete p; + } + delete this; - return EVENT_DONE; + return EVENT_DONE; } + DereferContinuation(C * ap):Continuation(NULL), p(ap) { SET_HANDLER(&DereferContinuation::dieEvent);
