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;