From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14500 invoked by alias); 30 Aug 2011 13:04:12 -0000 Received: (qmail 14489 invoked by uid 22791); 30 Aug 2011 13:04:11 -0000 X-SWARE-Spam-Status: No, hits=-6.7 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 30 Aug 2011 13:03:53 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p7UD3qRY017672 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 30 Aug 2011 09:03:52 -0400 Received: from localhost.localdomain (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id p7UD3pP4023977; Tue, 30 Aug 2011 09:03:51 -0400 From: Phil Muldoon To: matt rice Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 4/7] [python] API for macros: Add methods to get a gdb.Macro. References: <1314198654-9008-1-git-send-email-ratmice@gmail.com> <1314198654-9008-5-git-send-email-ratmice@gmail.com> Reply-to: pmuldoon@redhat.com X-URL: http://www.redhat.com Date: Tue, 30 Aug 2011 13:04:00 -0000 In-Reply-To: <1314198654-9008-5-git-send-email-ratmice@gmail.com> (matt rice's message of "Wed, 24 Aug 2011 08:10:51 -0700") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes 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 X-SW-Source: 2011-08/txt/msg00596.txt.bz2 matt rice writes: > +{ > + struct symtab *st = symtab_object_to_symtab (self); STPY_REQUIRE_VALID will do this for you. > > @@ -242,6 +274,75 @@ salpy_is_valid (PyObject *self, PyObject *args) > Py_RETURN_TRUE; > } > > +static PyObject * > +salpy_macros (PyObject *self, PyObject *args) > +{ > + struct symtab_and_line *sal; > + PyObject *result; > + enum macro_walk_result walk_result; > + struct macropy_user_data mud; > + struct macro_scope *ms; > + > + SALPY_REQUIRE_VALID (self, sal); > + > + ms = sal_macro_scope (*sal); This can return NULL. > + result = PyList_New (0); > + if (result == NULL) > + return NULL; > + > + mud.list = result; > + mud.objfile = macro_table_objfile (ms->file->table); > + walk_result = macro_for_each_in_scope (ms->file, ms->line, > + pymacro_add_macro_to_list, &mud); So you need to check ms before you call this ^^ code. > @@ -477,6 +578,9 @@ Return true if this symbol table is valid, false if not." }, > { "fullname", stpy_fullname, METH_NOARGS, > "fullname () -> String.\n\ > Return the symtab's full source filename." }, > + { "macros", stpy_macros, METH_NOARGS, > + "macros () -> List.\n\ > +Return a list of macros in the symtab." }, I think this should return a Tuple. Tuples are immutable, and unless you for see a use for the user to manipulate the List, we should guard against it. If you agree, please alter stpy_macros too. > +macro cannot be found." }, > + { "macros", salpy_macros, METH_NOARGS, > + "macros () -> List.\n\ > +Return all the macros which are available at the symbol table and line \ > +object's location." }, See above.