From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id acH3OBGL62nx5TgAWB0awg (envelope-from ) for ; Fri, 24 Apr 2026 11:24:01 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=cMKtzkn8; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id DEA271E0BA; Fri, 24 Apr 2026 11:24:01 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 3B32A1E067 for ; Fri, 24 Apr 2026 11:24:01 -0400 (EDT) Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id D90464BB5920 for ; Fri, 24 Apr 2026 15:24:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D90464BB5920 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=cMKtzkn8 Received: from mail-oi1-x22c.google.com (mail-oi1-x22c.google.com [IPv6:2607:f8b0:4864:20::22c]) by sourceware.org (Postfix) with ESMTPS id A247C4BB590C for ; Fri, 24 Apr 2026 15:23:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A247C4BB590C Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A247C4BB590C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::22c ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777044201; cv=none; b=QGCAGHJy8BhWTz9PgGxwOdkdQEpZ7H590r6GXwSbg2q6BBGNwrRrEsmLplJ87YS9CNWzNoNATZArl0MVhmEeTthm2nzF9bhGLbzw+s32q3ykeHhef4tWiELbrPN7siqGGdnYwq+McwjGuURi7Q5qR2W3KwyHrjzA7LC0zj6H5E0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777044201; c=relaxed/simple; bh=eVRjx3CJVZ/zNZ7ly/5+v8vPJBGPI7H5GDVGm9c9Jxo=; h=DKIM-Signature:From:Date:Subject:MIME-Version:Message-Id:To; b=m/MGErTiQAEwUlpvpSZP0MUBcROR1wqAYJSzGdJxMntnvSa8/DJ0I4ihN+pyn31Y9F1b9IVLCiufecLaxybyajsdFnVGomqvptoONEA92jH8llunw6LPc9cja3j3lqpqQiL1SKvUEMQCut87gzrVdUeKKsm/jSsqr9EdUKfcjIE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A247C4BB590C Received: by mail-oi1-x22c.google.com with SMTP id 5614622812f47-479e4835e16so2932882b6e.1 for ; Fri, 24 Apr 2026 08:23:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1777044201; x=1777649001; darn=sourceware.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=YZyvnnZeOy5rg8tqbbiBRHCp1O6nAowrleDY3ctZa/4=; b=cMKtzkn87JdpzY8VByuCifir6fHHu5FQEOEEq/o65e3W/i57Lgmry1IauKftcCYzbr noriDt1Q8vG0nXYs/4kqthELrmn8DFSQ3qCsu/EkpZhdJrnJPmJtc6zfHKDAu053y324 liBx9bQCNfX+tu5MWmt9bfwI7djpwlO9rubTTpcGl+oG5It4V2JpPuZl0YGPSUaGLcV1 uz3b+QKKVBDda32LtLld30wwe1Brl+DxZQJwko3ID/5W222N7JoGZC+ZLOKATUfZtstI 2XZR/KpFwlYKWGC/mkGGSmlww7lUZqwxKmGDMYViT+eQdVquYVO1eBEL39V3/M+xeZC5 gPvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777044201; x=1777649001; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=YZyvnnZeOy5rg8tqbbiBRHCp1O6nAowrleDY3ctZa/4=; b=XEelW9s2KzoyJoOWz8RN6kVsxqzw4uXAE+j5nRjdJyWWpVKNrqcpEOl3fsOc0+l08W qKxOXgkzKK7iPtOPcMGMMHZbqcZPm/CbmKeyO0ToeQ0J7oAor/3GgorCH9Tt7YpFqm1G jGp7ZJW1Z9SzIv6ZMkBU4/mAIvacI7IjM6ra4XzQFjjLcn6R7Xnro79a7/cSniD3d3nf xJRvLezAghfw+ZiDhKW4724TJGfXApMSFx+6iRK2mTsuAFSjE6A/7e1xeGAqk6liZL3O SSFyeAAgVBSCjdsGosaPBDCW86WSFpWPCOeS/OLZ3/wYezmtMJaBtqBgg9LPnT3cJNxF KGCA== X-Gm-Message-State: AOJu0YyYF/4KqayWjEOEOXq2IAZaSSksL3x7T2OuYsj0tk3eaACOgpVd nLDpJHpjRLgSDtvs8S63GLLcR/RmdCwvDQn+0l+Wp0Pzmd2Y2EVWlup4iNz3MDm7JB5pECSL8Bn 0AZg= X-Gm-Gg: AeBDieuRv7kD15snViJ0c84twbDQmN3JovHRNbY8IHM9rYvuL7Y9u9MuLB7ZT//jW5i SgGEoT2E1bP/becIW2ZQEuN22A+C85Qk/82/xnrSA7yeZ68pfNL1Mnwo3cnMNs1mEuDY6pmoUZy piJHdN6qdc+g1AGCA0Bhw58wiHouIBDkBwTqzH8Zl7WrEibsCASXhNG+uzwbQkTPskiJ4X7tEy9 PSh21EDXOxquzZsd/avdsQQDNoW61fNOO8DYNwlWXLVle1MhaaXb+TmsDXsqf0Lvd0EuY8Pqdmw OONkMksvfl9mAABWTIFdbgQOMR98SGHjOUjDiigQkhQeB36Zxr607fb1K35T+iMfAIJH3+fh1R2 eLDotm3MpLUgft9C/5a/iVCOYYDfUc1n5SGiQ4XsVLJauDtytEJ4r4k+mt0PiqHCnhuumpYJFbD OzhXsaf1i2cbrsaQ1OISW5Ojc9H8WVC2aLrai3X4wLaEqT2nr7djz6vf36jO+z/Rqg X-Received: by 2002:a05:6808:690b:b0:467:880:744a with SMTP id 5614622812f47-4799c9fd09dmr17628384b6e.24.1777044200834; Fri, 24 Apr 2026 08:23:20 -0700 (PDT) Received: from [192.168.0.26] (75-166-225-82.hlrn.qwest.net. [75.166.225.82]) by smtp.gmail.com with ESMTPSA id 5614622812f47-479a03ac624sm15947563b6e.18.2026.04.24.08.23.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 08:23:20 -0700 (PDT) From: Tom Tromey Date: Fri, 24 Apr 2026 09:23:19 -0600 Subject: [PATCH 1/2] Allow move of compiled_regex MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260424-print-var-and-cleanup-v1-1-7b6a2861ccb5@adacore.com> References: <20260424-print-var-and-cleanup-v1-0-7b6a2861ccb5@adacore.com> In-Reply-To: <20260424-print-var-and-cleanup-v1-0-7b6a2861ccb5@adacore.com> To: gdb-patches@sourceware.org Cc: Tom Tromey X-Mailer: b4 0.14.3 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org This patch makes it possible to move a compiled_regex. --- gdbsupport/gdb_regex.cc | 13 +++++++++++-- gdbsupport/gdb_regex.h | 30 +++++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/gdbsupport/gdb_regex.cc b/gdbsupport/gdb_regex.cc index 111e5ff24a8..6774aa4c805 100644 --- a/gdbsupport/gdb_regex.cc +++ b/gdbsupport/gdb_regex.cc @@ -33,17 +33,25 @@ compiled_regex::compiled_regex (const char *regex, int cflags, regerror (code, &m_pattern, err.data (), length); error (("%s: %s"), message, err.data ()); } + + m_valid = true; } -compiled_regex::~compiled_regex () +void +compiled_regex::clear () { - regfree (&m_pattern); + if (m_valid) + { + regfree (&m_pattern); + m_valid = false; + } } int compiled_regex::exec (const char *string, size_t nmatch, regmatch_t pmatch[], int eflags) const { + gdb_assert (m_valid); return regexec (&m_pattern, string, nmatch, pmatch, eflags); } @@ -52,5 +60,6 @@ compiled_regex::search (const char *string, int length, int start, int range, struct re_registers *regs) { + gdb_assert (m_valid); return re_search (&m_pattern, string, length, start, range, regs); } diff --git a/gdbsupport/gdb_regex.h b/gdbsupport/gdb_regex.h index 63fd9c32119..f7d3190839f 100644 --- a/gdbsupport/gdb_regex.h +++ b/gdbsupport/gdb_regex.h @@ -35,10 +35,32 @@ class compiled_regex const char *message) ATTRIBUTE_NONNULL (2) ATTRIBUTE_NONNULL (4); - ~compiled_regex (); + ~compiled_regex () + { + clear (); + } DISABLE_COPY_AND_ASSIGN (compiled_regex); + compiled_regex (compiled_regex &&other) + : m_valid (other.m_valid), + m_pattern (other.m_pattern) + { + other.m_valid = false; + } + + compiled_regex &operator= (compiled_regex &&other) + { + if (&other != this) + { + clear (); + m_valid = other.m_valid; + m_pattern = other.m_pattern; + other.m_valid = false; + } + return *this; + } + /* Wrapper around ::regexec. */ int exec (const char *string, size_t nmatch, regmatch_t pmatch[], @@ -50,6 +72,12 @@ class compiled_regex int range, struct re_registers *regs); private: + /* Free the compiled pattern, if necessary. */ + void clear (); + + /* True if the compiled pattern is valid. */ + bool m_valid = false; + /* The compiled pattern. */ regex_t m_pattern; }; -- 2.53.0