From 89e0472b50364bed2a5a2068c0121b64b3b0321b Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Wed, 7 Mar 2012 05:37:38 -0600 Subject: Another fix to metadata value parsing --- src/item.cc | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'src/item.cc') diff --git a/src/item.cc b/src/item.cc index ef64e154..4ddbe913 100644 --- a/src/item.cc +++ b/src/item.cc @@ -189,22 +189,16 @@ void item_t::parse_tags(const char * p, tag = string(q, len - index); string_map::iterator i; - const string::size_type plen = std::strlen(p); - const char * v = p + (q - p) + (len - index) + 1; - while (*v == '\0' && v < p + plen) - ++v; - - if (v < p + plen) { - string field(v); - if (by_value) { - bind_scope_t bound_scope(scope, *this); - i = set_tag(tag, expr_t(field).calc(bound_scope), overwrite_existing); - } else { - i = set_tag(tag, string_value(field), overwrite_existing); - } - (*i).second.second = true; - break; + string field(p + len + index); + trim(field); + if (by_value) { + bind_scope_t bound_scope(scope, *this); + i = set_tag(tag, expr_t(field).calc(bound_scope), overwrite_existing); + } else { + i = set_tag(tag, string_value(field), overwrite_existing); } + (*i).second.second = true; + break; } first = false; } -- cgit v1.2.3