From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6379 invoked by alias); 8 Nov 2008 00:41:48 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 6220 invoked by uid 9766); 8 Nov 2008 00:41:47 -0000 Date: Sat, 08 Nov 2008 00:41:00 -0000 Message-ID: <20081108004147.6197.qmail@sourceware.org> From: ppluzhnikov@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] archer-tromey-python: 2008-11-07 Paul Pluzhnikov X-Git-Refname: refs/heads/archer-tromey-python X-Git-Reftype: branch X-Git-Oldrev: 935ac21122a22e4875032f0522f7b2e15d03858e X-Git-Newrev: 1673e85f1048d7fc42cb3b75ed9e479450c520d0 X-SW-Source: 2008-q4/txt/msg00086.txt.bz2 List-Id: The branch, archer-tromey-python has been updated via 1673e85f1048d7fc42cb3b75ed9e479450c520d0 (commit) from 935ac21122a22e4875032f0522f7b2e15d03858e (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 1673e85f1048d7fc42cb3b75ed9e479450c520d0 Author: Paul Pluzhnikov Date: Fri Nov 7 16:41:20 2008 -0800 2008-11-07 Paul Pluzhnikov * python/python-type.c (typy_lookup_type): Fix "dangling" access. ----------------------------------------------------------------------- Summary of changes: gdb/ChangeLog | 4 ++++ gdb/python/python-type.c | 15 ++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) First 500 lines of diff: diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 41ba6ab..487e321 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,4 +1,8 @@ 2008-11-07 Paul Pluzhnikov + + * python/python-type.c (typy_lookup_type): Fix "dangling" access. + +2008-11-07 Paul Pluzhnikov * python/python-function.c (fnpy_call): Fix syntax error in last checkin. diff --git a/gdb/python/python-type.c b/gdb/python/python-type.c index 77bb489..9e5e2c3 100644 --- a/gdb/python/python-type.c +++ b/gdb/python/python-type.c @@ -134,17 +134,22 @@ typy_lookup_type (struct demangle_component *demangled, { struct type *type; char *type_name; + enum demangle_component_type demangled_type; - if (demangled->type == DEMANGLE_COMPONENT_POINTER - || demangled->type == DEMANGLE_COMPONENT_REFERENCE - || demangled->type == DEMANGLE_COMPONENT_CONST - || demangled->type == DEMANGLE_COMPONENT_VOLATILE) + /* Save the type: typy_lookup_type() may (indirectly) overwrite + memory pointed by demanged. */ + demangled_type = demangled->type; + + if (demangled_type == DEMANGLE_COMPONENT_POINTER + || demangled_type == DEMANGLE_COMPONENT_REFERENCE + || demangled_type == DEMANGLE_COMPONENT_CONST + || demangled_type == DEMANGLE_COMPONENT_VOLATILE) { type = typy_lookup_type (demangled->u.s_binary.left, block); if (! type) return NULL; - switch (demangled->type) + switch (demangled_type) { case DEMANGLE_COMPONENT_REFERENCE: return lookup_reference_type (type); hooks/post-receive -- Repository for Project Archer.