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 2010/05/25 05:06:29 UTC

svn commit: r947899 - in /trafficserver/traffic/trunk: iocore/cache/CacheTest.cc libinktomi++/ink_port.h proxy/RegressionSM.cc proxy/RegressionSM.h

Author: zwoop
Date: Tue May 25 03:06:28 2010
New Revision: 947899

URL: http://svn.apache.org/viewvc?rev=947899&view=rev
Log:
TS-370: Fix for regression tests (-R 1) segfaulting.

Tested: FC12

	Author: Alan M. Carroll

Modified:
    trafficserver/traffic/trunk/iocore/cache/CacheTest.cc
    trafficserver/traffic/trunk/libinktomi++/ink_port.h
    trafficserver/traffic/trunk/proxy/RegressionSM.cc
    trafficserver/traffic/trunk/proxy/RegressionSM.h

Modified: trafficserver/traffic/trunk/iocore/cache/CacheTest.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/cache/CacheTest.cc?rev=947899&r1=947898&r2=947899&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/cache/CacheTest.cc (original)
+++ trafficserver/traffic/trunk/iocore/cache/CacheTest.cc Tue May 25 03:06:28 2010
@@ -400,7 +400,7 @@ EXCLUSIVE_REGRESSION_TEST(cache)(Regress
     replace_write_test.clone(),
     replace_test.clone(),
     replace_read_test.clone(),
-    NULL
+    NULL_PTR
     )->run(pstatus);
   return;
 }

Modified: trafficserver/traffic/trunk/libinktomi++/ink_port.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/libinktomi%2B%2B/ink_port.h?rev=947899&r1=947898&r2=947899&view=diff
==============================================================================
--- trafficserver/traffic/trunk/libinktomi++/ink_port.h (original)
+++ trafficserver/traffic/trunk/libinktomi++/ink_port.h Tue May 25 03:06:28 2010
@@ -81,4 +81,9 @@ typedef unsigned long long uint64;
 
 #define NUL '\0'
 
+// Need to use this to avoid problems when calling variadic functions
+// with many arguments. In such cases, a raw '0' or NULL can be
+// interpreted as 32 bits
+#define NULL_PTR static_cast<void*>(0)
+
 #endif

Modified: trafficserver/traffic/trunk/proxy/RegressionSM.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/RegressionSM.cc?rev=947899&r1=947898&r2=947899&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/RegressionSM.cc (original)
+++ trafficserver/traffic/trunk/proxy/RegressionSM.cc Tue May 25 03:06:28 2010
@@ -93,19 +93,18 @@ int RegressionSM::regression_sm_start(in
   return EVENT_CONT;
 }
 
-RegressionSM *r_sequential(RegressionTest *t, ...) {
+RegressionSM *r_sequential(RegressionTest *t, RegressionSM* sm, ...) {
   RegressionSM *new_sm = new RegressionSM(t);
   va_list ap;
-  va_start(ap, t);
+  va_start(ap, sm);
   new_sm->par = false;
   new_sm->rep = false;
   new_sm->ichild = 0;
   new_sm->nchildren = 0;
   new_sm->nwaiting = 0;
-  while (1) {
-    RegressionSM *x = va_arg(ap, RegressionSM*);
-    if (!x) break;
-    new_sm->children(new_sm->nchildren++) = x;
+  while (0 != sm) {
+    new_sm->children(new_sm->nchildren++) = sm;
+    sm = va_arg(ap, RegressionSM*);
   }
   new_sm->n = new_sm->nchildren;
   va_end(ap);
@@ -124,19 +123,18 @@ RegressionSM *r_sequential(RegressionTes
   return new_sm;
 }
 
-RegressionSM *r_parallel(RegressionTest *t, ...) {
+RegressionSM *r_parallel(RegressionTest *t, RegressionSM *sm, ...) {
   RegressionSM *new_sm = new RegressionSM(t);
   va_list ap;
-  va_start(ap, t);
+  va_start(ap, sm);
   new_sm->par = true;
   new_sm->rep = false;
   new_sm->ichild = 0;
   new_sm->nchildren = 0;
   new_sm->nwaiting = 0;
-  while (1) {
-    RegressionSM *x = va_arg(ap, RegressionSM*);
-    if (!x) break;
-    new_sm->children(new_sm->nchildren++) = x;
+  while (sm) {
+    new_sm->children(new_sm->nchildren++) = sm;
+    sm = va_arg(ap, RegressionSM*);
   }
   new_sm->n = new_sm->nchildren;
   va_end(ap);
@@ -227,15 +225,14 @@ struct ReRegressionSM : RegressionSM {
 REGRESSION_TEST(RegressionSM)(RegressionTest *t, int atype, int *pstatus) {
   r_sequential(
     t,
-    r_parallel(t, new ReRegressionSM(t), new ReRegressionSM(t), NULL),
-    r_sequential(t, new ReRegressionSM(t), new ReRegressionSM(t), NULL),
+    r_parallel(t, new ReRegressionSM(t), new ReRegressionSM(t), NULL_PTR),
+    r_sequential(t, new ReRegressionSM(t), new ReRegressionSM(t), NULL_PTR),
     r_parallel(t, 3, new ReRegressionSM(t)),
     r_sequential(t, 3, new ReRegressionSM(t)),
     r_parallel(
       t,
       r_sequential(t, 2, new ReRegressionSM(t)),
       r_parallel(t, 2, new ReRegressionSM(t)),
-      NULL),
-    NULL)->run(pstatus);
+      NULL_PTR),
+    NULL_PTR)->run(pstatus);
 }
-

Modified: trafficserver/traffic/trunk/proxy/RegressionSM.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/RegressionSM.h?rev=947899&r1=947898&r2=947899&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/RegressionSM.h (original)
+++ trafficserver/traffic/trunk/proxy/RegressionSM.h Tue May 25 03:06:28 2010
@@ -72,9 +72,9 @@ struct RegressionSM : Continuation {
   RegressionSM(const RegressionSM &);
 };
 
-RegressionSM *r_sequential(RegressionTest *t, ...); // terminate list in NULL
 RegressionSM *r_sequential(RegressionTest *t, int n, RegressionSM *sm);
-RegressionSM *r_parallel(RegressionTest *t, ...); // terminate list in NULL
+RegressionSM *r_sequential(RegressionTest *t, RegressionSM *sm, ...); // terminate list in NULL
 RegressionSM *r_parallel(RegressionTest *t, int n, RegressionSM *sm);
+RegressionSM *r_parallel(RegressionTest *t, RegressionSM *sm, ...); // terminate list in NULL
 
 #endif