]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-bus: store the strv size when extending it
authorFrantisek Sumsal <frantisek@sumsal.cz>
Wed, 29 Apr 2026 09:50:01 +0000 (11:50 +0200)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Wed, 29 Apr 2026 10:58:22 +0000 (12:58 +0200)
So strv_push_with_size() doesn't have to recalculate the size every
time.

src/libsystemd/sd-bus/bus-message.c

index 94be969f7f4206e5d7af9d720ece435ec7bb37da..017ffb7a6127aa3f1b0d88b3d62e4a84fd74d60c 100644 (file)
@@ -4331,6 +4331,7 @@ int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz) {
 _public_ int sd_bus_message_read_strv_extend(sd_bus_message *m, char ***l) {
         char type;
         const char *contents, *s;
+        size_t n;
         int r;
 
         assert(m);
@@ -4347,9 +4348,10 @@ _public_ int sd_bus_message_read_strv_extend(sd_bus_message *m, char ***l) {
         if (r <= 0)
                 return r;
 
+        n = strv_length(*l);
         /* sd_bus_message_read_basic() does content validation for us. */
         while ((r = sd_bus_message_read_basic(m, *contents, &s)) > 0) {
-                r = strv_extend(l, s);
+                r = strv_extend_with_size(l, &n, s);
                 if (r < 0)
                         return r;
         }