core-util: Improve pa_replace() behaviour

- Assert that the search string isn't empty.
 - Add test.
 - Improve documentation.
This commit is contained in:
Ulrich Eckhardt 2016-05-16 19:51:05 +02:00 committed by Arun Raghavan
parent c9c8f4285f
commit 111e332556
3 changed files with 11 additions and 0 deletions

View file

@ -3194,6 +3194,7 @@ char *pa_replace(const char*s, const char*a, const char *b) {
pa_assert(s);
pa_assert(a);
pa_assert(*a);
pa_assert(b);
an = strlen(a);

View file

@ -249,6 +249,10 @@ void pa_reduce(unsigned *num, unsigned *den);
unsigned pa_ncpus(void);
/* Replaces all occurrences of `a' in `s' with `b'. The caller has to free the
* returned string. All parameters must be non-NULL and additionally `a' must
* not be a zero-length string.
*/
char *pa_replace(const char*s, const char*a, const char *b);
/* Escapes p by inserting backslashes in front of backslashes. chars is a

View file

@ -228,6 +228,11 @@ START_TEST (modargs_test_escape) {
}
END_TEST
START_TEST (modargs_test_replace_fail_4) {
pa_replace("abe", "", "bab");
}
END_TEST
START_TEST (modargs_test_unescape) {
char* value;
@ -264,6 +269,7 @@ int main(int argc, char *argv[]) {
tcase_add_test_raise_signal(tc, modargs_test_replace_fail_1, SIGABRT);
tcase_add_test_raise_signal(tc, modargs_test_replace_fail_2, SIGABRT);
tcase_add_test_raise_signal(tc, modargs_test_replace_fail_3, SIGABRT);
tcase_add_test_raise_signal(tc, modargs_test_replace_fail_4, SIGABRT);
tcase_add_test(tc, modargs_test_escape);
tcase_add_test(tc, modargs_test_unescape);