From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id MZHQIsA5GGrHqSIAWB0awg (envelope-from ) for ; Thu, 28 May 2026 08:49:04 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=l7hc+Cvx; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=l7hc+Cvx; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 8931D1E0A3; Thu, 28 May 2026 08:49:04 -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 094051E062 for ; Thu, 28 May 2026 08:49:03 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 27EBE4BA2E15 for ; Thu, 28 May 2026 12:49:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 27EBE4BA2E15 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=l7hc+Cvx; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=l7hc+Cvx Received: from MRWPR03CU001.outbound.protection.outlook.com (mail-francesouthazon11011019.outbound.protection.outlook.com [40.107.130.19]) by sourceware.org (Postfix) with ESMTPS id 22EE04BA2E20 for ; Thu, 28 May 2026 12:48:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 22EE04BA2E20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 22EE04BA2E20 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=40.107.130.19 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1779972487; cv=pass; b=LUZQhtZtmRn5rF4n9eBCPL11ogZiqwlu7zEUISKjyLeco5fIoNN/6a0uvlq1uoGPtBESQXJApvcFvCRxBOPxHNUI6/s7V3VcMwxJ3oMLxmEWzeXOxk2ONW5jzY8zxsZXpp+Xy4aZZkMAbF3tl+2wr1T3raBnxcnsq8JBWQFU7JA= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1779972487; c=relaxed/simple; bh=nmwNF2OLyj3pyOpWiWER7XM0hYLpoyVn3rQ3z6d90h0=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From: MIME-Version; b=qRcpRWXMFqd6gCWDpsnFKM/dIk7ariBSzNFAmWVa4sQn2v9HoQKcJFdXaGYwKVr2qS0K3Hdab6Bgype5XjgCPHSiHl7jXEKhI7I1Y/G0IAAkX9idKXh0oogSEsQBQmUJz24VhOiRKeN2gQfCi/52VKT3S5BhfTBxRnx/8Z1+uXs= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=l7hc+Cvx; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=l7hc+Cvx DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 22EE04BA2E20 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=nlSEp6aor6peCURv2fa8tiig0FyHDlJnDyW3GPnE1oYYaFNfutZJJEFej3qMxBYfZiAg3yWH9ojW3EFm352TKOCF7aCJy75p22dVJqSxWKr0kdq4Sv/TPImBGjsABFfhtZkldTNlSWXb5522iUFTigNvtRfrrr+q9Sa9aHIzzeXvtn/vzfCiIHKjMiFrRDKDddgwr/6DQLI53/4FRxvQbDko4mhyhrxHCw1W7MqCY0gUWPsnV1WEeUVKZsNbnKH00fnlYJr1UFDnVBRDSWhe1gcTlrW9MdLu5eqEbfJ+JZiwPH/ENr5PAcm+fbLF+0okODeDPmoCiUyla7PGfnB+1w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pxNOmq7dWjLv2nssqIO61L74/X9/O6WIMrfW6ezMN9c=; b=iYcjjD8zUk6VRhzUyMFnYgNfvfuTdziwFHoCqcdW2DRbS2B1BxlGmtagdWXPeWOxXoxXSpAynjVLquh4rgjk5NmbH+3vJdlmFvsHPGlrAMwxUy3xtpueT8HYHn+nqm3wj4a0E9QOCsHu+scdSWNAVOdTtaKiCdH4rr8pMyoqn901fj+dExuR12GTGgeRafFVviHjHm/XFJzFiXYcEomFGeH57oiyJ1RGT48257cXF1mIZBQagqe+2IEx7EFUQ8URu3qQafvJzMC+u6idP24++erB9afvo6HyZMDtuxCqBX6c4bU9hEcvyw51SY8ueRW9tkvjA6mHsAcebP9ZdUA14w== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=tromey.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pxNOmq7dWjLv2nssqIO61L74/X9/O6WIMrfW6ezMN9c=; b=l7hc+CvxnUt4iDUFpcW0h42/y/OkCSptF6uWJRY6Ov8MVOYWCKimrB1IFJzHSnbKNpJnmEQytQF4Rt1DR+74oYhuk2rqmP4O5Jp3TzBUzi0+mqiyx13jvioz+Omb6n/nAxOzF4OS4SpP97PnIexY2NinpzSPh0Lqf8Ma1TIE/og= Received: from DU6P191CA0005.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:540::18) by AM8PR08MB6547.eurprd08.prod.outlook.com (2603:10a6:20b:316::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.13; Thu, 28 May 2026 12:47:47 +0000 Received: from DU6PEPF0000B61C.eurprd02.prod.outlook.com (2603:10a6:10:540:cafe::56) by DU6P191CA0005.outlook.office365.com (2603:10a6:10:540::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.14 via Frontend Transport; Thu, 28 May 2026 12:47:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by DU6PEPF0000B61C.mail.protection.outlook.com (10.167.8.135) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.71.7 via Frontend Transport; Thu, 28 May 2026 12:47:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mjyvcX7ASDy9kRSeKLlgoq7WD7np+ye5Sp/x5qxfeQi1PuAk57pz+LNI8S0HOXdiJeOz8M6+1sedPbEY2WQQ12QZT8tZWDRGWQVMT+Ak3aqB5hPmDDh3D1SB4FDuG2Nf4lFUd+mc/jEUu7DfOr7w31+vTkXv02TXGBJFoXgbrHYCMQvqrqm8n7Nb/7mIYwek9BwPXnaQMlO2AT7bpoAxx+ltDDeKzpzYFuFU6pNSeSGtLI17EV0ANy8MiHwWs9D+eWuem6RT4poWWShz9JRpxoVljP+wLv6hjByxzdvNKsk+DOYIWCnFCmLMXRK0tEC7p4yvfBhvAeQ5JbRFKNI0ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=pxNOmq7dWjLv2nssqIO61L74/X9/O6WIMrfW6ezMN9c=; b=iE77jQMIH5jgSNSJXYg8LYuOaT8IwN3A0APtJS8r4NqZkexFMKSmUTII/ql4I+kZ1uzE8O6qbXdO/B2suusfQAWqw9IrYiJBRN6XoyqjEX22oTMYsIzBlhJTIIliwUmXFV2ywWe+2CIR9EWtA/Og8P40PjxriDwYe1D4iYwZERYMFkp9HYWGoxSgUUR5zNl59sIplhYmRXjnZVtjG7FdiF5U26NQ2CprkFz1qQtCUki6otUGGs8xV5gpcFIzegAC1zaaW2gelnyRLx3O0dhQz8o+QwM+X3qFawMWGK136rXyOQGK4SJ0CCQ247P/xKl5YRP6OZgshPOHDWBCEapD/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pxNOmq7dWjLv2nssqIO61L74/X9/O6WIMrfW6ezMN9c=; b=l7hc+CvxnUt4iDUFpcW0h42/y/OkCSptF6uWJRY6Ov8MVOYWCKimrB1IFJzHSnbKNpJnmEQytQF4Rt1DR+74oYhuk2rqmP4O5Jp3TzBUzi0+mqiyx13jvioz+Omb6n/nAxOzF4OS4SpP97PnIexY2NinpzSPh0Lqf8Ma1TIE/og= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DU0PR08MB8663.eurprd08.prod.outlook.com (2603:10a6:10:401::6) by DB9PR08MB6524.eurprd08.prod.outlook.com (2603:10a6:10:251::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.13; Thu, 28 May 2026 12:46:44 +0000 Received: from DU0PR08MB8663.eurprd08.prod.outlook.com ([fe80::f957:cec9:ec8d:7968]) by DU0PR08MB8663.eurprd08.prod.outlook.com ([fe80::f957:cec9:ec8d:7968%2]) with mapi id 15.21.0071.010; Thu, 28 May 2026 12:46:44 +0000 Message-ID: <11b35b46-7e18-471a-94e2-91fef5b287d2@arm.com> Date: Thu, 28 May 2026 13:46:43 +0100 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1] gdb/python: fix memory leak in gdb_py_tp_name To: Tom Tromey Cc: gdb-patches@sourceware.org, Andrew Burgess References: <20260526160459.270322-1-matthieu.longo@arm.com> <87fr3e6sdp.fsf@tromey.com> Content-Language: en-US From: Matthieu Longo In-Reply-To: <87fr3e6sdp.fsf@tromey.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: LO3P265CA0016.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:bb::21) To DU0PR08MB8663.eurprd08.prod.outlook.com (2603:10a6:10:401::6) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DU0PR08MB8663:EE_|DB9PR08MB6524:EE_|DU6PEPF0000B61C:EE_|AM8PR08MB6547:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ec0e765-e508-40f3-db4e-08debcb7520d x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|376014|1800799024|366016|11063799006|56012099006|6133799003|4143699003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info-Original: Oj1ui4ciGi6WByH4yE5/GJKi+y+2ox5h2ozB5GXxht8LAFq/ZE3+k0CRVyaelID/Fx40tVHR39YBWYk5+Mp93OphLATiGgSrmQyKbvuO3I6IC+brltrXr5l2ULXooapZzrU8qWcHViRuMJM8awwxXYVdjWlDjaDz/pC4rVQPxb79UDoPF0fLKHXckTFGmSQ5YrLHsud1G8tIh0r2RnHfYTLWplKP4PakYuS7e3jHdKRbvpc4dvQJq82n/srNxnVPyriliVgJR+9iPfAvtxbaLqMGZ28hXU9M+QVv0WqJVxwMYf+PbUeneGzCqjEjSsQTnGAq0Ea+7tNtcfjlPMNxPpWMVcFCzVqgeGDJkqo1eR1akDeUMtue/Q7SxW+FSxuWBQfGQP/la0Y/6efBUB+X7UTJ2EJtDAaVPnno96D91GMUSojTS6ZN+3GvnsG3Fsa2yx4KI4ADxN6dGEbSwDM1fIJrG8sY+G5NpcOq316fseKI4GRgNlJXOT1f0Hh06aYZE9m+4Ovg6hb96yIiH/R28K05qOpNI9In81Gz3Kd/1a+JAdwhwpdCRWBlhnoRHWgCSOsqAFRWR8vwND78PdsJUFryFEPcFynFkXRx7xLJu4fYinzUWc/GgAwld+anX7twUKJCQS8h1Xb2ND9LJA1J8tIpieC3HN42qCLrlUoeRgHE9dpiqr2QYfqYjQKGe0FU X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0PR08MB8663.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(11063799006)(56012099006)(6133799003)(4143699003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: ZlWG2HCEHp1Ct6YDyn3F4lDDm/gFbAfbP+aYa6VG0ZwsZXkUsTf//ED4yqLpffVt7PDuRIWIFAPu5bG81546dPVK8esohvBwgtl0cviwj/VsckFveZ1JEmyFmFeoXYFMnNHZaELwdApTiR2/ryJ9mkiwueHJ6wnaZLoVEu/lHjgEHIkXQ9EhrnuHQ19JxfOzRlql4ME5fZKSSjt5PV6m6+ND0HBw79K3bN38TKesu0NwgqLjDodao2DRsjLIFCb6eLbJkQfkJ3blutPy3rS70pONbGbBhihg90PcXv2cdHvlHppbI4plAad1lU6sBUt6N3rz6KEaA6J6RgQo0t7UYA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6524 X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU6PEPF0000B61C.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 73e4b5e5-2772-46c5-454a-08debcb72c57 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700016|14060799003|82310400026|35042699022|1800799024|4143699003|11063799006|56012099006|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: NEOgXTAOPGZR0xzS6jmu+T6wQkySfT5VakGU+gUHdB0owx7xDvrB4t6Y3uL+8BtOWmcseqA1wtvSPtnbjnEAyRljzZQMud6hs142ORmZTEx9uqY/DRioSAuJ98z+ihI6eX7M8arI2oHFZztGE3HEF0gCiO62JeH40SWJB6h9hnP/k8fHX6ZZwaOO2bO+pa1pZQvh7jdTDRa6uo77KWeRYlsiVDaxv26z1f8VPqVpKAgbKQycllerOSAhfScamw1+lr7eEMeYsZiKUP/QOWHNpV29so893vbop2b9k/lybD++ebds3VncrkmTX35AN878DbRTi7z1Uh3da81cna5iVT8S3KoE3GIkGvvKNh3LNCN2zZ7v7p+fRMLcplqnPdrp2Kn1jAPOKbTciyG0NqG8hZO6pKb3jqoJmFlvDk8AbbdQD5iE/NyMPPea3JBTqJZ3YuRSs2WRnQOMywFz10bhYM/fLNqPAw5nXtXqteDikrdXkAXuvmX7QYBW90LA46VVTdc3sM3EMtwkiuFm10PUDaKYlv6JeXXeI3fvJwDukhPYyCc46LMA83dLpdQTRkbNLtvGVm721LZ4V/Hsl5HxZmQto9bXzwYCDrW0FTspHKhswNfN68ahUgrPdM10KPSP9ogkrc1eZfalM6y9UcvpEnUdsjEFqFOVm0Y1trRC+v4UzVyGsLjv65Ij7ERULEjp1nQkZbmTADNUjOAxK28PvjU2nduX28ovF9J9+TJ112I= X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(36860700016)(14060799003)(82310400026)(35042699022)(1800799024)(4143699003)(11063799006)(56012099006)(6133799003)(18002099003)(22082099003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /Ttf40uCGfAVVsqpxj3f8krP5sPu4gXiEHzfiO6etjIztHwxYVp/SMkCahKUUO56NRzotwOY65YmIATlJsFNIg8bD1lPd73CIT8u6kvQNAw5rSuf2+e1RgnRH81AqTbfYKTHxnTw0Ip4MutW+ARZBb0BqOBwV16Ew01phG20/mopvaQDJ/ErVF8vxirZaI5CkAUQ8eA6Pe5ZTZCaXCh9cnPk2A/waXRf1lPXj6Oc4G6qzI4Nv6DAThprsgL/hMZV9z/lft7OmuFtPKBHKlB5n3X/YapQgV3FPyzR+65GxRxexUeu9IpO2oSdVVXvekL97OZ98Bz0Lj43EDoHGNf7hsc4xqvrTYkrKv31UWxVvhOL1YxcDBEADZAWy1gfgnRUgwaR8lORsAAEfYIA3DkyjatQ6pLtxDE0SbpYspGeUjP1WrRsxC3Lp6Cwl4F0YKET X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 May 2026 12:47:47.3817 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0ec0e765-e508-40f3-db4e-08debcb7520d X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: DU6PEPF0000B61C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6547 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 On 26/05/2026 17:35, Tom Tromey wrote: >>>>>> "Matthieu" == Matthieu Longo writes: > > Matthieu> The proposed approach consists in changing gdb_py_tp_name() to return a > Matthieu> std::string > > That seems fine. > > Matthieu> A unfortunate side effect of this fix is that every call sites where the > Matthieu> tp_name is printed, must now use `.c_str()' because PyErr_Format() > Matthieu> and its siblings cannot handle std::string. > > Yeah, that's unfortunate but normal. > > Matthieu> /* Return the type's fully qualified name from a PyTypeObject. */ > Matthieu> -const char * > Matthieu> +std::string > Matthieu> gdb_py_tp_name (PyTypeObject *py_type) noexcept > Matthieu> { > Matthieu> #if PY_VERSION_HEX >= 0x030d0000 > Matthieu> /* Note: PyType_GetFullyQualifiedName() was added in version 3.13, and is > Matthieu> part of the stable ABI since version 3.13. */ > Matthieu> - PyObject *fully_qualified_name = PyType_GetFullyQualifiedName (py_type); > Matthieu> + gdbpy_ref<> fully_qualified_name (PyType_GetFullyQualifiedName (py_type)); > Matthieu> if (fully_qualified_name == nullptr) > Matthieu> return nullptr; > > First, returning nullptr here seems really weird. I think this should > cause a crash? In C++23 this constructor is even deleted. > > Second, if PyType_GetFullyQualifiedName fails, this will violate the > invariants gdb normally uses for error handling. > > Matthieu> - return PyUnicode_AsUTF8AndSize (fully_qualified_name, nullptr); > Matthieu> + return PyUnicode_AsUTF8AndSize (fully_qualified_name.get (), nullptr); > > I think this can also fail. > > Matthieu> + gdbpy_ref<> qualname (PyType_GetQualName (py_type)); > Matthieu> if (qualname == nullptr) > Matthieu> return nullptr; > > Matthieu> - return PyUnicode_AsUTF8AndSize (qualname, nullptr); > Matthieu> + return PyUnicode_AsUTF8AndSize (qualname.get (), nullptr); > > Similar stuff in these spots. > > Tom Sorry, I completely missed those issues while I was changing the code in others places. I should definitely have spotted them if it was not my thoughtlessness in those last days. Here below is the diff of gdb_py_tp_name() with fixes for all the issues you previously mentioned. Thanks for your patience with me, Tom. Matthieu --- a/gdb/python/py-obj-type.c +++ b/gdb/python/py-obj-type.c @@ -21,17 +21,23 @@ #include "py-obj-type.h" /* Return the type's fully qualified name from a PyTypeObject. */ -const char * +std::string gdb_py_tp_name (PyTypeObject *py_type) noexcept { + auto pyobj_to_str = [](PyObject *name) -> std::string + { + const char *s = PyUnicode_AsUTF8AndSize (name, nullptr); + return (s == nullptr) ? "" : s; + }; + #if PY_VERSION_HEX >= 0x030d0000 /* Note: PyType_GetFullyQualifiedName() was added in version 3.13, and is part of the stable ABI since version 3.13. */ - PyObject *fully_qualified_name = PyType_GetFullyQualifiedName (py_type); + gdbpy_ref<> fully_qualified_name (PyType_GetFullyQualifiedName (py_type)); if (fully_qualified_name == nullptr) - return nullptr; + return {}; - return PyUnicode_AsUTF8AndSize (fully_qualified_name, nullptr); + return pyobj_to_str (fully_qualified_name.get ()); #else /* PY_VERSION_HEX < 0x030d0000 && ! defined (Py_LIMITED_API) */ /* For non-heap types, the fully qualified name corresponds to tp_name. */ @@ -44,11 +50,11 @@ gdb_py_tp_name (PyTypeObject *py_type) noexcept # if PY_VERSION_HEX >= 0x030b0000 /* Note: PyType_GetQualName() was added in version 3.11. */ - PyObject *qualname = PyType_GetQualName (py_type); + gdbpy_ref<> qualname (PyType_GetQualName (py_type)); if (qualname == nullptr) - return nullptr; + return {}; - return PyUnicode_AsUTF8AndSize (qualname, nullptr); + return pyobj_to_str (qualname.get ()); # else /* In the absence of PyType_GetQualName(), fallback on using PyHeapTypeObject @@ -58,15 +64,15 @@ gdb_py_tp_name (PyTypeObject *py_type) noexcept when the minimum supported Python version is increased above 3.10. */ PyHeapTypeObject *ht = (PyHeapTypeObject *) py_type; if (ht->ht_qualname == nullptr) - return nullptr; + return {}; - return PyUnicode_AsUTF8AndSize (ht->ht_qualname, nullptr); + return pyobj_to_str (ht->ht_qualname); # endif #endif }