diff options
-rw-r--r-- | src/pulsecore/tagstruct.c | 13 | ||||
-rw-r--r-- | src/pulsecore/tagstruct.h | 3 |
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; |