[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] qcow2: Use a GString in report_unsupported_feature()
From: |
Alberto Garcia |
Subject: |
[PATCH] qcow2: Use a GString in report_unsupported_feature() |
Date: |
Tue, 14 Jan 2020 15:54:37 +0100 |
This is a bit more efficient than having to allocate and free memory
for each item.
The default size (60) is enough for all the existing incompatible
features.
Suggested-by: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Alberto Garcia <address@hidden>
---
block/qcow2.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/block/qcow2.c b/block/qcow2.c
index cef9d72b3a..ecf6827420 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -453,16 +453,15 @@ static void cleanup_unknown_header_ext(BlockDriverState
*bs)
static void report_unsupported_feature(Error **errp, Qcow2Feature *table,
uint64_t mask)
{
- char *features = g_strdup("");
- char *old;
+ GString *features = g_string_sized_new(60);
while (table && table->name[0] != '\0') {
if (table->type == QCOW2_FEAT_TYPE_INCOMPATIBLE) {
if (mask & (1ULL << table->bit)) {
- old = features;
- features = g_strdup_printf("%s%s%.46s", old, *old ? ", " : "",
- table->name);
- g_free(old);
+ if (features->len > 0) {
+ g_string_append(features, ", ");
+ }
+ g_string_append_printf(features, "%.46s", table->name);
mask &= ~(1ULL << table->bit);
}
}
@@ -470,14 +469,15 @@ static void report_unsupported_feature(Error **errp,
Qcow2Feature *table,
}
if (mask) {
- old = features;
- features = g_strdup_printf("%s%sUnknown incompatible feature: %"
PRIx64,
- old, *old ? ", " : "", mask);
- g_free(old);
+ if (features->len > 0) {
+ g_string_append(features, ", ");
+ }
+ g_string_append_printf(features,
+ "Unknown incompatible feature: %" PRIx64, mask);
}
- error_setg(errp, "Unsupported qcow2 feature(s): %s", features);
- g_free(features);
+ error_setg(errp, "Unsupported qcow2 feature(s): %s", features->str);
+ g_string_free(features, TRUE);
}
/*
--
2.20.1
- [PATCH] qcow2: Use a GString in report_unsupported_feature(),
Alberto Garcia <=