X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdaemon%2Fmeta_data.c;h=a11fccb2e2fb125b02ffc9d8d048ad58f3388972;hb=2f2f63a8c96ecd07e481b2d28f03ce0e82c55f5a;hp=d26570e9db7f3e855f347b4303441041a912ba15;hpb=fe4af1c0492b00fed423211d465798bf926da6b1;p=collectd.git diff --git a/src/daemon/meta_data.c b/src/daemon/meta_data.c index d26570e9..a11fccb2 100644 --- a/src/daemon/meta_data.c +++ b/src/daemon/meta_data.c @@ -739,6 +739,7 @@ int meta_data_as_string (meta_data_t *md, /* {{{ */ char *actual; char buffer[MD_MAX_NONSTRING_CHARS]; /* For non-string types. */ char *temp; + int type; if ((md == NULL) || (key == NULL) || (value == NULL)) return (-EINVAL); @@ -752,7 +753,9 @@ int meta_data_as_string (meta_data_t *md, /* {{{ */ return (-ENOENT); } - switch (e->type) + type = e->type; + + switch (type) { case MD_TYPE_STRING: actual = e->value.mv_string; @@ -774,21 +777,20 @@ int meta_data_as_string (meta_data_t *md, /* {{{ */ break; default: pthread_mutex_unlock (&md->lock); - ERROR ("meta_data_as_string: unknown type %d for key `%s'", - e->type, e->key); + ERROR ("meta_data_as_string: unknown type %d for key `%s'", type, key); return (-ENOENT); } + pthread_mutex_unlock (&md->lock); + temp = md_strdup (actual); if (temp == NULL) { pthread_mutex_unlock (&md->lock); - ERROR ("meta_data_as_string: md_strdup failed for key `%s'.", e->key); + ERROR ("meta_data_as_string: md_strdup failed for key `%s'.", key); return (-ENOMEM); } - pthread_mutex_unlock (&md->lock); - *value = temp; return (0);