From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29077 invoked by alias); 23 Sep 2013 20:41:46 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 29068 invoked by uid 89); 23 Sep 2013 20:41:45 -0000 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 23 Sep 2013 20:41:45 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.8 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r8NKffML030275 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 23 Sep 2013 16:41:42 -0400 Received: from barimba (ovpn-113-63.phx2.redhat.com [10.3.113.63]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r8NKfeS4023556 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Mon, 23 Sep 2013 16:41:41 -0400 From: Tom Tromey To: Doug Evans Cc: gdb-patches@sourceware.org Subject: Re: [RFA] fix ref counting of inferior_to_inferior_object References: Date: Mon, 23 Sep 2013 20:41:00 -0000 In-Reply-To: (Doug Evans's message of "Thu, 12 Sep 2013 15:27:37 -0700") Message-ID: <87hadbmfsr.fsf@fleche.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2013-09/txt/msg00832.txt.bz2 >>>>> "Doug" == Doug Evans writes: Doug> While adding an inferior attribute to the newobjfile event, Doug> I noticed inferior_to_inferior_object sometimes returns (AFAICT) Doug> a new reference and sometimes returns a borrowed reference. The current code is maybe weird but I think it isn't incorrect. That said it is fine to change it as well. The current model is that the Python object mirroring the inferior clears the inferior->Python mapping when it is finally destroyed. If the Python code then requests the Python object for that inferior again, a new object is created. This is "ok" because the Inferior object doesn't carry any user state. Doug> /* Return a reference to the Python object of type Inferior Doug> representing INFERIOR. If the object has already been created, Doug> - return it and increment the reference count, otherwise, create it. Doug> + return it, otherwise create it. The result is a borrowed reference. Doug> Return NULL on failure. */ This change requires a CPYCHECKER_RETURNS_BORROWED_REF annotation on the declaration of inferior_to_inferior_object. Tom