From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 48964 invoked by alias); 15 Mar 2019 13:37:24 -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 48933 invoked by uid 89); 15 Mar 2019 13:37:23 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-8.9 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3,SPF_PASS autolearn=ham version=3.3.1 spammy=whereby X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (209.51.188.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 15 Mar 2019 13:37:22 +0000 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40617) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h4n1R-0000vF-J6; Fri, 15 Mar 2019 09:37:18 -0400 Received: from [176.228.60.248] (port=2993 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1h4n1M-0003z7-ST; Fri, 15 Mar 2019 09:37:13 -0400 Date: Fri, 15 Mar 2019 13:37:00 -0000 Message-Id: <831s381cp5.fsf@gnu.org> From: Eli Zaretskii To: Pedro Alves CC: tromey@adacore.com, gdb-patches@sourceware.org In-reply-to: (message from Pedro Alves on Fri, 15 Mar 2019 12:34:34 +0000) Subject: Re: Fix pressing down in the TUI (Re: [RFC 8.3 0/3] Some style fixes) References: <20190308210433.32683-1-tromey@adacore.com> <83pnr08tc8.fsf@gnu.org> <83zhq26fcw.fsf@gnu.org> <874l899nh3.fsf@tromey.com> <8336ns3uv4.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-IsSubscribed: yes X-SW-Source: 2019-03/txt/msg00311.txt.bz2 > Cc: gdb-patches@sourceware.org > From: Pedro Alves > Date: Fri, 15 Mar 2019 12:34:34 +0000 > > On 03/12/2019 04:44 PM, Eli Zaretskii wrote: > > 1. The first patch fixes the problem noticed by Pedro: pressing DOWN > > arrow in the command window doesn't scroll the source window. This is > > because we don't initialize the s->nlines field, and then > > tui_vertical_source_scroll thinks we are off the chart. This fixes > > that: > > > > --- gdb/source-cache.c~4 2019-03-10 08:34:47.422752400 +0200 > > +++ gdb/source-cache.c 2019-03-12 11:50:15.094147600 +0200 > > @@ -194,6 +194,12 @@ source_cache::get_source_lines (struct s > > std::ifstream input (fullname); > > if (input.is_open ()) > > { > > + if (s->line_charpos == 0) > > + { > > + scoped_fd desc = open_source_file (s); > > + if (desc.get () >= 0) > > + find_source_lines (s, desc.get ()); > > I think this should return false if open_source_file fails? How could it fail if input.is_open returns non-zero? Are you thinking about some race, whereby something deletes the file after the constructor for 'input' returns? > Otherwise this LGTM. I see get_plain_source_lines has similar > code, so my immediate thought was to move that to a helper function, > but there's a difference that makes that unviable -- get_plain_source_lines > always wants to open the source file first, while here we can avoid > it unless line_charpos is 0. Right. Also, I originally hoped std::ifstream will have a way to get at the underlying file descriptor, but no such luck, AFAICT.