]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/charray.c
Import slapd.conf mode change (with typo correction) from -devel.
[openldap] / servers / slapd / charray.c
index 26a669cd60e1e7ddcbb014372f60a49099e0ce01..e3974e4ac05662ee3758b78cefdc1d40e7ff2e20 100644 (file)
@@ -29,7 +29,7 @@ charray_add(
                    (n + 2) * sizeof(char *) );
        }
 
-       (*a)[n++] = s;
+       (*a)[n++] = ch_strdup(s);
        (*a)[n] = NULL;
 }
 
@@ -51,7 +51,7 @@ charray_merge(
        *a = (char **) ch_realloc( (char *) *a, (n + nn + 1) * sizeof(char *) );
 
        for ( i = 0; i < nn; i++ ) {
-               (*a)[n + i] = s[i];
+               (*a)[n + i] = ch_strdup(s[i]);
        }
        (*a)[n + nn] = NULL;
 }
@@ -128,10 +128,16 @@ str2charray( char *str, char *brkstr )
 
        res = (char **) ch_malloc( (i + 1) * sizeof(char *) );
        i = 0;
+
+       pthread_mutex_lock(&strtok_mutex);
+
        for ( s = strtok( str, brkstr ); s != NULL; s = strtok( NULL,
            brkstr ) ) {
                res[i++] = ch_strdup( s );
        }
+
+       pthread_mutex_unlock(&strtok_mutex);
+
        res[i] = NULL;
 
        free( str );