This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] gnu-v2-abi.c: strchr may return null
- From: Joel Brobecker <brobecker at adacore dot com>
- To: msnyder at sonic dot net
- Cc: gdb-patches at sourceware dot org
- Date: Tue, 4 Sep 2007 07:18:30 -0700
- Subject: Re: [patch] gnu-v2-abi.c: strchr may return null
- References: <16934.12.7.175.2.1188422744.squirrel@webmail.sonic.net>
> 2007-08-29 Michael Snyder <msnyder@access-company.com>
>
> * gnu-v2-abi.c (gnuv2_value_rtti_type): Guard against null.
This looks OK to me, but can you give it a few more days so that Daniel
can provide any comment on it (C++ is not our main focus at AdaCore)?
I'm thinking this is perhaps a case where an assert might be better:
Does the rest of the function make any sense if we don't find our
space? I don't know the encoding so perhaps it's OK to give it a try...
> Index: gnu-v2-abi.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/gnu-v2-abi.c,v
> retrieving revision 1.25
> diff -p -r1.25 gnu-v2-abi.c
> *** gnu-v2-abi.c 23 Aug 2007 18:08:33 -0000 1.25
> --- gnu-v2-abi.c 29 Aug 2007 21:24:09 -0000
> *************** gnuv2_value_rtti_type (struct value *v,
> *** 192,198 ****
> CORE_ADDR vtbl;
> struct minimal_symbol *minsym;
> struct symbol *sym;
> ! char *demangled_name;
> struct type *btype;
>
> if (full)
> --- 192,198 ----
> CORE_ADDR vtbl;
> struct minimal_symbol *minsym;
> struct symbol *sym;
> ! char *demangled_name, *p;
> struct type *btype;
>
> if (full)
> *************** gnuv2_value_rtti_type (struct value *v,
> *** 252,258 ****
>
> /* If we just skip the prefix, we get screwed by namespaces */
> demangled_name=cplus_demangle(demangled_name,DMGL_PARAMS|DMGL_ANSI);
> ! *(strchr(demangled_name,' '))=0;
>
> /* Lookup the type for the name */
> /* FIXME: chastain/2003-11-26: block=NULL is bogus. See pr gdb/1465. */
> --- 252,260 ----
>
> /* If we just skip the prefix, we get screwed by namespaces */
> demangled_name=cplus_demangle(demangled_name,DMGL_PARAMS|DMGL_ANSI);
> ! p = strchr (demangled_name, ' ');
> ! if (p)
> ! *p = '\0';
>
> /* Lookup the type for the name */
> /* FIXME: chastain/2003-11-26: block=NULL is bogus. See pr gdb/1465. */
--
Joel