]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/tokenizer.c
remap: Change remapping function argument type from void to int16_t / float as approp...
[pulseaudio] / src / pulsecore / tokenizer.c
index 1eb466dd819e2abcb564a8f31bde7a3dcc236cd7..4c610e8d1a860d50b607fe894e481cf3082179ae 100644 (file)
 #include <stdlib.h>
 
 #include <pulse/xmalloc.h>
-#include <pulse/gccmacro.h>
 
 #include <pulsecore/dynarray.h>
 #include <pulsecore/macro.h>
 
 #include "tokenizer.h"
 
-static void token_free(void *p, void *userdata) {
-    pa_xfree(p);
-}
-
 static void parse(pa_dynarray*a, const char *s, unsigned args) {
     int infty = 0;
     const char delimiter[] = " \t\n\r";
@@ -68,7 +63,7 @@ static void parse(pa_dynarray*a, const char *s, unsigned args) {
 pa_tokenizer* pa_tokenizer_new(const char *s, unsigned args) {
     pa_dynarray *a;
 
-    a = pa_dynarray_new();
+    a = pa_dynarray_new(pa_xfree);
     parse(a, s, args);
     return (pa_tokenizer*) a;
 }
@@ -77,12 +72,16 @@ void pa_tokenizer_free(pa_tokenizer *t) {
     pa_dynarray *a = (pa_dynarray*) t;
 
     pa_assert(a);
-    pa_dynarray_free(a, token_free, NULL);
+    pa_dynarray_free(a);
 }
 
 const char *pa_tokenizer_get(pa_tokenizer *t, unsigned i) {
     pa_dynarray *a = (pa_dynarray*) t;
 
     pa_assert(a);
+
+    if (i >= pa_dynarray_size(a))
+        return NULL;
+
     return pa_dynarray_get(a, i);
 }