From nobody Mon Feb 9 06:27:14 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1554123943619286.4722541395579; Mon, 1 Apr 2019 06:05:43 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 980A3C059B7A; Mon, 1 Apr 2019 13:05:41 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6304E611C2; Mon, 1 Apr 2019 13:05:41 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 23B821819AFF; Mon, 1 Apr 2019 13:05:41 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x31D5Hju016042 for ; Mon, 1 Apr 2019 09:05:17 -0400 Received: by smtp.corp.redhat.com (Postfix) id 118C61001DD1; Mon, 1 Apr 2019 13:05:17 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id 88389108426E for ; Mon, 1 Apr 2019 13:05:16 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Mon, 1 Apr 2019 15:04:57 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 06/10] util: alloc: Introduce VIR_TMP X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 01 Apr 2019 13:05:42 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Allow preserving the holy serenity of the stack by clearing out temp pointer when leaving the scope. --- src/libvirt_private.syms | 1 + src/util/viralloc.c | 7 +++++++ src/util/viralloc.h | 15 +++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index bae7f646fe..2f98ac901f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1425,6 +1425,7 @@ virAllocTestHook; virAllocTestInit; virAllocTestOOM; virAllocVar; +virClearPtr; virDeleteElementsN; virDispose; virDisposeString; diff --git a/src/util/viralloc.c b/src/util/viralloc.c index e82bfa0acd..6dd19fb36b 100644 --- a/src/util/viralloc.c +++ b/src/util/viralloc.c @@ -634,3 +634,10 @@ virDisposeString(char **strptr) virDispose(strptr, strlen(*strptr), sizeof(char), NULL); } + + +void +virClearPtr(void *ptrptr) +{ + *(void **)ptrptr =3D NULL; +} diff --git a/src/util/viralloc.h b/src/util/viralloc.h index c8133938bf..1b1d23b3af 100644 --- a/src/util/viralloc.h +++ b/src/util/viralloc.h @@ -81,6 +81,8 @@ void virDispose(void *ptrptr, size_t count, size_t elemen= t_size, size_t *countpt ATTRIBUTE_NONNULL(1); void virDisposeString(char **strptr) ATTRIBUTE_NONNULL(1); +void virClearPtr(void *varptr) + ATTRIBUTE_NONNULL(1); /** * VIR_ALLOC: @@ -694,4 +696,17 @@ void virAllocTestHook(void (*func)(int, void*), void *= data); # define VIR_AUTOUNREF(type) \ __attribute__((cleanup(virObjectAutoUnref))) type +/** + * VIR_TMP: + * @type: type of the pointer to be NULLed automatically + * + * Marks the pointer as temporary which should be cleared when leaving sco= pe. + * + * This macro declares a temporary variable of @type which is set to NULL = when + * the variable is leaving scope. This keeps the stack tidy. Note that no + * resources are freed or cleared otherwise. @type must be a pointer. + */ +# define VIR_TMP(type) \ + __attribute__((cleanup(virClearPtr))) type + #endif /* LIBVIRT_VIRALLOC_H */ --=20 2.20.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list