From: Mike Yuan Date: Wed, 11 Feb 2026 15:29:37 +0000 (+0100) Subject: sd-varlink: use free_and_replace at one more place X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=959f6923e50098650724f9c5d132f19e9e40dc9c;p=thirdparty%2Fsystemd.git sd-varlink: use free_and_replace at one more place --- diff --git a/src/libsystemd/sd-varlink/sd-varlink.c b/src/libsystemd/sd-varlink/sd-varlink.c index 198713d440c..d6d3b5bcb94 100644 --- a/src/libsystemd/sd-varlink/sd-varlink.c +++ b/src/libsystemd/sd-varlink/sd-varlink.c @@ -1381,15 +1381,14 @@ static int varlink_format_queue(sd_varlink *v) { * would not corrupt our fd message boundaries */ while (v->output_queue) { - _cleanup_free_ int *array = NULL; - assert(v->n_output_queue > 0); - VarlinkJsonQueueItem *q = v->output_queue; - if (v->n_output_fds > 0) /* unwritten fds? if we'd add more we'd corrupt the fd message boundaries, hence wait */ return 0; + VarlinkJsonQueueItem *q = v->output_queue; + _cleanup_free_ int *array = NULL; + if (q->n_fds > 0) { array = newdup(int, q->fds, q->n_fds); if (!array) @@ -1401,8 +1400,7 @@ static int varlink_format_queue(sd_varlink *v) { return r; /* Take possession of the queue element's fds */ - free(v->output_fds); - v->output_fds = TAKE_PTR(array); + free_and_replace(v->output_fds, array); v->n_output_fds = q->n_fds; q->n_fds = 0;