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