[libvirt] [PATCH] qemu: Avoid needless copies of static strings

Erik Skultety eskultet at redhat.com
Thu Jun 30 12:00:19 UTC 2016


On 30/06/16 10:03, Jiri Denemark wrote:
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>  src/qemu/qemu_hotplug.c | 21 +++++++++++----------
>  1 file changed, 11 insertions(+), 10 deletions(-)
> 
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index bf6430d..f88520f 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -3931,7 +3931,8 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
>  {
>      qemuDomainObjPrivatePtr priv = vm->privateData;
>      time_t now = time(NULL);
> -    char expire_time [64];
> +    const char *expire;
> +    char *validTo = NULL;
>      const char *connected = NULL;
>      const char *password;
>      int ret = -1;
> @@ -3962,19 +3963,18 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
>      if (ret != 0)
>          goto end_job;
>  
> -    if (password[0] == '\0') {
> -        snprintf(expire_time, sizeof(expire_time), "now");
> +    if (password[0] == '\0' ||
> +        (auth->expires && auth->validTo <= now)) {
> +        expire = "now";
>      } else if (auth->expires) {
> -        time_t lifetime = auth->validTo - now;
> -        if (lifetime <= 0)
> -            snprintf(expire_time, sizeof(expire_time), "now");
> -        else
> -            snprintf(expire_time, sizeof(expire_time), "%lu", (long unsigned)auth->validTo);
> +        if (virAsprintf(&validTo, "%lu", (unsigned long) auth->validTo) < 0)
> +            goto end_job;
> +        expire = validTo;
>      } else {
> -        snprintf(expire_time, sizeof(expire_time), "never");
> +        expire = "never";
>      }
>  
> -    ret = qemuMonitorExpirePassword(priv->mon, type, expire_time);
> +    ret = qemuMonitorExpirePassword(priv->mon, type, expire);
>  
>      if (ret == -2) {
>          /* XXX we could fake this with a timer */
> @@ -3991,6 +3991,7 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
>      if (qemuDomainObjExitMonitor(driver, vm) < 0)
>          ret = -1;
>   cleanup:
> +    VIR_FREE(validTo);
>      virObjectUnref(cfg);
>      return ret;
>  }
>

ACK

Erik




More information about the libvir-list mailing list