From 9bbacf966985bf822e264ae4ad1de74b69262f1c Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Thu, 12 Feb 2009 21:18:20 +0000 Subject: [PATCH] Thu Feb 12 14:27:12 CST 2009 Pekka Pessi * s2tcase.c: allow multiple calls to s2_select_tests() git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@11953 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- libs/sofia-sip/.update | 2 +- libs/sofia-sip/s2check/s2check.h | 2 ++ libs/sofia-sip/s2check/s2tcase.c | 19 ++++++++++++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index 23569485d8..f5c54bb4e1 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Thu Feb 12 15:17:34 CST 2009 +Thu Feb 12 15:18:14 CST 2009 diff --git a/libs/sofia-sip/s2check/s2check.h b/libs/sofia-sip/s2check/s2check.h index 772d09e94c..4197d58420 100644 --- a/libs/sofia-sip/s2check/s2check.h +++ b/libs/sofia-sip/s2check/s2check.h @@ -47,6 +47,8 @@ SOFIA_BEGIN_DECLS void s2_tcase_add_test(TCase *, TFun, char const *name); +void s2_select_tests(char const *pattern); + SOFIA_END_DECLS #endif /* S2CHECK_H */ diff --git a/libs/sofia-sip/s2check/s2tcase.c b/libs/sofia-sip/s2check/s2tcase.c index e743019762..285ec0278d 100644 --- a/libs/sofia-sip/s2check/s2tcase.c +++ b/libs/sofia-sip/s2check/s2tcase.c @@ -30,6 +30,7 @@ #include #include #include +#include #include @@ -79,7 +80,7 @@ void s2_tcase_add_test(TCase *tc, TFun tf, char const *name) */ void s2_select_tests(char const *pattern) { - size_t i; + size_t i, n; char *cases, *s, **patterns; if (!pattern) @@ -91,10 +92,22 @@ void s2_select_tests(char const *pattern) for (i = 2, s = cases; (s = strchr(s, ',')); s++) i++; - patterns = calloc(i, sizeof *patterns); + if (test_patterns != default_patterns) { + patterns = (char **)test_patterns; + for (n = 0; patterns[n]; n++) + ; + patterns = realloc(patterns, (n + i) * (sizeof *patterns)); + } + else { + n = 0; + patterns = malloc(i * (sizeof *patterns)); + } + + assert(patterns); + memset(&patterns[n], 0, i * (sizeof *patterns)); /* Split by commas */ - for (i = 0, s = cases;; i++) { + for (i = n, s = cases;; i++) { patterns[i] = s; if (s == NULL) break;