keyval: Use GString to accumulate value strings
QString supports modifying its string, but it's quite limited: you can only append. The remaining callers use it for building an initial string, never for modifying it later. Change keyval_parse_one() to do build the initial string with GString. This is another step towards making QString immutable. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20201211171152.146877-19-armbru@redhat.com>
This commit is contained in:
parent
68af4cc121
commit
7ece42110d
@ -189,7 +189,7 @@ static const char *keyval_parse_one(QDict *qdict, const char *params,
|
|||||||
QDict *cur;
|
QDict *cur;
|
||||||
int ret;
|
int ret;
|
||||||
QObject *next;
|
QObject *next;
|
||||||
QString *val;
|
GString *val;
|
||||||
|
|
||||||
key = params;
|
key = params;
|
||||||
val_end = NULL;
|
val_end = NULL;
|
||||||
@ -263,7 +263,7 @@ static const char *keyval_parse_one(QDict *qdict, const char *params,
|
|||||||
|
|
||||||
if (key == implied_key) {
|
if (key == implied_key) {
|
||||||
assert(!*s);
|
assert(!*s);
|
||||||
val = qstring_from_substr(params, 0, val_end - params);
|
val = g_string_new_len(params, val_end - params);
|
||||||
s = val_end;
|
s = val_end;
|
||||||
if (*s == ',') {
|
if (*s == ',') {
|
||||||
s++;
|
s++;
|
||||||
@ -276,7 +276,7 @@ static const char *keyval_parse_one(QDict *qdict, const char *params,
|
|||||||
}
|
}
|
||||||
s++;
|
s++;
|
||||||
|
|
||||||
val = qstring_new();
|
val = g_string_new(NULL);
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (!*s) {
|
if (!*s) {
|
||||||
break;
|
break;
|
||||||
@ -286,11 +286,12 @@ static const char *keyval_parse_one(QDict *qdict, const char *params,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
qstring_append_chr(val, *s++);
|
g_string_append_c(val, *s++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!keyval_parse_put(cur, key_in_cur, val, key, key_end, errp)) {
|
if (!keyval_parse_put(cur, key_in_cur, qstring_from_gstring(val),
|
||||||
|
key, key_end, errp)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
|
Loading…
Reference in New Issue
Block a user