From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9475 invoked by alias); 3 Apr 2002 00:29:57 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 9468 invoked from network); 3 Apr 2002 00:29:57 -0000 Received: from unknown (HELO nevyn.them.org) (128.2.145.6) by sources.redhat.com with SMTP; 3 Apr 2002 00:29:57 -0000 Received: from drow by nevyn.them.org with local (Exim 3.35 #1 (Debian)) id 16sYf1-0005Jh-00 for ; Tue, 02 Apr 2002 19:29:59 -0500 Date: Tue, 02 Apr 2002 16:29:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sources.redhat.com Subject: [RFA] Fix mi-break.exp: 'b "basics.c":16' Message-ID: <20020402192959.A17349@nevyn.them.org> Mail-Followup-To: gdb-patches@sources.redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.3.23i X-SW-Source: 2002-04/txt/msg00045.txt.bz2 [I dislike decode_line_1. But that seems to be the general consensus...] There was a logic error in the code to handle "file":line. Several, actually. I suspect that it once worked and had bitrotten as the behavior of the function changed. For instance, at the beginning of the function: if (p[0] == '"') { is_quote_enclosed = 1; (*argptr)++; p++; } Then below it checked 'is_quote_enclosed && (**argptr) == '"'). That'll only be true given a literal '"":', which was not the intent of the test. This patch updates the behavior, should change nothing else, and causes no regressions. OK to check in? -- Daniel Jacobowitz Carnegie Mellon University MontaVista Software Debian GNU/Linux Developer 2002-04-02 Daniel Jacobowitz * linespec.c (decode_line_1): Check for a double quote after a filename correctly. Index: linespec.c =================================================================== RCS file: /cvs/src/src/gdb/linespec.c,v retrieving revision 1.17 diff -u -p -r1.17 linespec.c --- linespec.c 2002/03/22 18:57:07 1.17 +++ linespec.c 2002/04/03 00:19:30 @@ -929,20 +929,12 @@ decode_line_1 (char **argptr, int funfir if ((*p == '"') && is_quote_enclosed) --p; copy = (char *) alloca (p - *argptr + 1); - if ((**argptr == '"') && is_quote_enclosed) - { - memcpy (copy, *argptr + 1, p - *argptr - 1); - /* It may have the ending quote right after the file name */ - if (copy[p - *argptr - 2] == '"') - copy[p - *argptr - 2] = 0; - else - copy[p - *argptr - 1] = 0; - } + memcpy (copy, *argptr, p - *argptr); + /* It may have the ending quote right after the file name */ + if (is_quote_enclosed && copy[p - *argptr - 1] == '"') + copy[p - *argptr - 1] = 0; else - { - memcpy (copy, *argptr, p - *argptr); - copy[p - *argptr] = 0; - } + copy[p - *argptr] = 0; /* Find that file's data. */ s = lookup_symtab (copy);