You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2011/05/24 04:18:27 UTC

svn commit: r1126829 - in /trafficserver/traffic/trunk: CHANGES mgmt/stats/StatProcessor.cc mgmt/stats/StatType.cc mgmt/stats/StatType.h

Author: zwoop
Date: Tue May 24 02:18:27 2011
New Revision: 1126829

URL: http://svn.apache.org/viewvc?rev=1126829&view=rev
Log:
TS-797 Wrong delete used in stats processor

Modified:
    trafficserver/traffic/trunk/CHANGES
    trafficserver/traffic/trunk/mgmt/stats/StatProcessor.cc
    trafficserver/traffic/trunk/mgmt/stats/StatType.cc
    trafficserver/traffic/trunk/mgmt/stats/StatType.h

Modified: trafficserver/traffic/trunk/CHANGES
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/CHANGES?rev=1126829&r1=1126828&r2=1126829&view=diff
==============================================================================
--- trafficserver/traffic/trunk/CHANGES (original)
+++ trafficserver/traffic/trunk/CHANGES Tue May 24 02:18:27 2011
@@ -1,6 +1,8 @@
                                                          -*- coding: utf-8 -*-
 
 Changes with Apache Traffic Server 2.1.9
+  *) [TS-797] Wrong delete used in stats processor.
+
   *) [TS-769] Fixed infinite loop when getting a 505 response from the
    origin and the connection is keep-alive.  Now downgrading keep-alive
    all the time along with the protocol.

Modified: trafficserver/traffic/trunk/mgmt/stats/StatProcessor.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/stats/StatProcessor.cc?rev=1126829&r1=1126828&r2=1126829&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/stats/StatProcessor.cc (original)
+++ trafficserver/traffic/trunk/mgmt/stats/StatProcessor.cc Tue May 24 02:18:27 2011
@@ -86,7 +86,7 @@ startElement(void *userData, const char 
     break;
 
   case EXPR_TAG:
-    exprContent = NEW(new char[BUFSIZ * 10]);   // Will free up at endElement
+    exprContent = (char*)xmalloc(BUFSIZ * 10);
     memset(exprContent, 0, BUFSIZ * 10);
     break;
 
@@ -129,8 +129,7 @@ endElement(void *userData, const char *n
     break;
 
   case EXPR_TAG:
-    statObject->assignExpr(exprContent);
-    delete(exprContent);
+    statObject->assignExpr(exprContent); // This hands over ownership of exprContent
     // fall through
 
   default:
@@ -155,15 +154,11 @@ charDataHandler(void *userData, const XM
   }
 
   if (currentTag == EXPR_TAG) {
-
     strncat(exprContent, content, ((BUFSIZ * 10) - strlen(exprContent) - 1));
 
   } else {
-
     statObject->assignDst(content, nodeVar, sumClusterVar);
-
   }
-
 }
 
 

Modified: trafficserver/traffic/trunk/mgmt/stats/StatType.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/stats/StatType.cc?rev=1126829&r1=1126828&r2=1126829&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/stats/StatType.cc (original)
+++ trafficserver/traffic/trunk/mgmt/stats/StatType.cc Tue May 24 02:18:27 2011
@@ -507,7 +507,7 @@ StatObject::assignDst(const char *str, b
  * ------------------------
  */
 void
-StatObject::assignExpr(const char *str)
+StatObject::assignExpr(char *str)
 {
   StatExprToken *statToken = NULL;
 
@@ -515,7 +515,8 @@ StatObject::assignExpr(const char *str)
     Debug(MODULE_INIT, "EXPRESSION: %s\n", str);
   }
   ink_debug_assert(m_expr_string == NULL);
-  m_expr_string = xstrdup(str);
+  // We take ownership here
+  m_expr_string = str;
 
   Tokenizer exprTok(" ");
   exprTok.Initialize(str);

Modified: trafficserver/traffic/trunk/mgmt/stats/StatType.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/mgmt/stats/StatType.h?rev=1126829&r1=1126828&r2=1126829&view=diff
==============================================================================
--- trafficserver/traffic/trunk/mgmt/stats/StatType.h (original)
+++ trafficserver/traffic/trunk/mgmt/stats/StatType.h Tue May 24 02:18:27 2011
@@ -208,7 +208,7 @@ public:
   };
   void clean();
   void assignDst(const char *, bool, bool);
-  void assignExpr(const char *);
+  void assignExpr(char *);
 
   StatExprToken *StatBinaryEval(StatExprToken *, char, StatExprToken *, bool cluster = false);
   StatFloat NodeStatEval(bool cluster);