From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id CFA8D3858C5E; Tue, 23 May 2023 08:38:31 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CFA8D3858C5E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1684831111; bh=R6klEIUl/IHBZd3uMeliXTGHnKFc5aYBJu8nuGV4XPk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=qwTTs9u+EO4+xmZk387sIi+PeLX59UPgbJnC3K30zk1chZ+qICNLzOS7SNvyfHIPD OQQ80GeymCxQoaANfZfy+JofXuWi4Y8R2DOabW+XXv9ETHSNujlA1CFPc0mBLMQDWw NL7kg4CqQ6PGdpiYMOOJGtihHXWCQ48qqIJSAAEU= From: "vries at gcc dot gnu.org" To: gdb-prs@sourceware.org Subject: [Bug tui/30056] double free when using reverse-search for a previous command and Ctrl-C Date: Tue, 23 May 2023 08:38:29 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gdb X-Bugzilla-Component: tui X-Bugzilla-Version: 12.1 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: vries at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_status cc cf_reconfirmed_on everconfirmed Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://sourceware.org/bugzilla/show_bug.cgi?id=3D30056 Tom de Vries changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW CC| |vries at gcc dot gnu.org Last reconfirmed| |2023-05-23 Ever confirmed|0 |1 --- Comment #1 from Tom de Vries --- This fixes it for me: ... diff --git a/readline/readline/callback.c b/readline/readline/callback.c index 93f23d97bc2..e2a97f7cee7 100644 --- a/readline/readline/callback.c +++ b/readline/readline/callback.c @@ -163,7 +163,7 @@ rl_callback_read_char (void) RL_CHECK_SIGNALS (); if (RL_ISSTATE (RL_STATE_ISEARCH)) { - eof =3D _rl_isearch_callback (_rl_iscxt); + eof =3D _rl_isearch_callback (&_rl_iscxt); if (eof =3D=3D 0 && (RL_ISSTATE (RL_STATE_ISEARCH) =3D=3D 0) && R= L_ISSTATE (RL_STATE_INPUTPENDING)) rl_callback_read_char (); diff --git a/readline/readline/isearch.c b/readline/readline/isearch.c index 080ba3cbb9c..9f9b72d3b8e 100644 --- a/readline/readline/isearch.c +++ b/readline/readline/isearch.c @@ -877,14 +877,17 @@ rl_search_history (int direction, int invoking_key) If _rl_isearch_dispatch finishes searching, this function is responsible for turning off RL_STATE_ISEARCH, which it does using _rl_isearch_clean= up. */ int -_rl_isearch_callback (_rl_search_cxt *cxt) +_rl_isearch_callback (_rl_search_cxt **cxt) { int c, r; - c =3D _rl_search_getchar (cxt); + c =3D _rl_search_getchar (*cxt); + if (*cxt =3D=3D 0) + return 1; /* We might want to handle EOF here */ - r =3D _rl_isearch_dispatch (cxt, cxt->lastc); - - return (r <=3D 0) ? _rl_isearch_cleanup (cxt, r) : 0; + r =3D _rl_isearch_dispatch (*cxt, (*cxt)->lastc); + if (*cxt =3D=3D 0) + return 1; + return (r <=3D 0) ? _rl_isearch_cleanup (*cxt, r) : 0; } #endif diff --git a/readline/readline/rlprivate.h b/readline/readline/rlprivate.h index 02838ae21ae..a549ec62607 100644 --- a/readline/readline/rlprivate.h +++ b/readline/readline/rlprivate.h @@ -306,7 +306,7 @@ extern _rl_search_cxt *_rl_scxt_alloc PARAMS((int, int)= ); extern void _rl_scxt_dispose PARAMS((_rl_search_cxt *, int)); extern int _rl_isearch_dispatch PARAMS((_rl_search_cxt *, int)); -extern int _rl_isearch_callback PARAMS((_rl_search_cxt *)); +extern int _rl_isearch_callback PARAMS((_rl_search_cxt **)); extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int)); extern int _rl_search_getchar PARAMS((_rl_search_cxt *)); ... --=20 You are receiving this mail because: You are on the CC list for the bug.=