summaryrefslogtreecommitdiff
path: root/src/item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/item.cc')
-rw-r--r--src/item.cc24
1 files changed, 9 insertions, 15 deletions
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;
}