You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2014/05/22 01:23:14 UTC
git commit: TS-2757: the Derefer should actually delete things
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 <jp...@apache.org>
Authored: Wed May 21 15:48:15 2014 -0700
Committer: James Peach <jp...@apache.org>
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);