summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/pulsecore/tagstruct.c13
-rw-r--r--src/pulsecore/tagstruct.h3
2 files changed, 7 insertions, 9 deletions
diff --git a/src/pulsecore/tagstruct.c b/src/pulsecore/tagstruct.c
index 92bace27..fb412a4a 100644
--- a/src/pulsecore/tagstruct.c
+++ b/src/pulsecore/tagstruct.c
@@ -570,10 +570,11 @@ int pa_tagstruct_get_proplist(pa_tagstruct *t, pa_proplist *p) {
return -1;
saved_rindex = t->rindex;
+ t->rindex++;
for (;;) {
const char *k;
- void *d;
+ const void *d;
uint32_t length;
if (pa_tagstruct_gets(t, &k) < 0)
@@ -588,17 +589,11 @@ int pa_tagstruct_get_proplist(pa_tagstruct *t, pa_proplist *p) {
if (length > MAX_TAG_SIZE)
goto fail;
- d = pa_xmalloc(length);
-
- if (pa_tagstruct_get_arbitrary(t, d, length) < 0)
+ if (pa_tagstruct_get_arbitrary(t, &d, length) < 0)
goto fail;
- if (pa_proplist_set(p, k, d, length) < 0) {
- pa_xfree(d);
+ if (pa_proplist_set(p, k, d, length) < 0)
goto fail;
- }
-
- pa_xfree(d);
}
return 0;
diff --git a/src/pulsecore/tagstruct.h b/src/pulsecore/tagstruct.h
index 8846b301..8699e6c8 100644
--- a/src/pulsecore/tagstruct.h
+++ b/src/pulsecore/tagstruct.h
@@ -33,6 +33,9 @@
#include <pulse/channelmap.h>
#include <pulse/volume.h>
#include <pulse/proplist.h>
+#include <pulse/gccmacro.h>
+
+#include <pulsecore/macro.h>
typedef struct pa_tagstruct pa_tagstruct;