]> 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 cf5da6483b3803305e3ad713308bc36d8ffa1172..4c610e8d1a860d50b607fe894e481cf3082179ae 100644 (file)
@@ -1,5 +1,3 @@
-/* $Id$ */
-
 /***
   This file is part of PulseAudio.
 
@@ -7,7 +5,7 @@
 
   PulseAudio is free software; you can redistribute it and/or modify
   it under the terms of the GNU Lesser General Public License as published
-  by the Free Software Foundation; either version 2 of the License,
+  by the Free Software Foundation; either version 2.1 of the License,
   or (at your option) any later version.
 
   PulseAudio is distributed in the hope that it will be useful, but
 #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, PA_GCC_UNUSED 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";
@@ -70,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;
 }
@@ -79,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);
 }