From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 321213858407 for ; Wed, 25 Jan 2023 13:56:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 321213858407 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674654983; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fVn5IOLw5BZIPWuRa0Az7BeeqKdJycOl4yREX59G6Ig=; b=HqShVRiwkISRdZaH7xbMYyQ8eheA1kjufE+2k6WTLo2vtVZLmdGtqgns1lEX20d9XJ38fB +jwrREKFpJRm/TwA9LuY8HfNhqKUjztKaoro9DqPCHbmrGtdMZCeAG5sWJfK3UugrwZwTf 0Sn8BxK9wpzV4UcMdwxO6SV89vxIwUo= Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-392-8DZp_uDuPCOaRROibh9ieQ-1; Wed, 25 Jan 2023 08:56:22 -0500 X-MC-Unique: 8DZp_uDuPCOaRROibh9ieQ-1 Received: by mail-qk1-f200.google.com with SMTP id v7-20020a05620a0f0700b006faffce43b2so12829257qkl.9 for ; Wed, 25 Jan 2023 05:56:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fVn5IOLw5BZIPWuRa0Az7BeeqKdJycOl4yREX59G6Ig=; b=hdLHP9nRZ6acr4ZhCH/dwMaqZuZ8r+lqOb6TNuD5sKAouT4jAUTmpp423C6g7jOBjD 1RB6ELNLDmjGW3Y4Ikf7uSfD5R00rGopve7iVGTO8PwEbDB3ixaOK6MfFSAKALO8b3wg O10ffdb93sOk/mBW/uuok2K//zqh3P9wzlDw882pl+BFiedGdk6QxnNqotiau2ndqwpE +rMGNyFaCfokKz4EWVTpy6bMXyoo+ZNZioegiAUkypit7mXWzeVvAbb96Tqy8v3ZePVQ KGWgUcL/dqffRL4N8bCY7f/dAhuw9+viPW77y0uJTdZtjkCafh9X+3ifmupO6sydbaz7 4PSw== X-Gm-Message-State: AFqh2kpOXF0Ein77kqbcpVhmycK3Slq59xaJvOAP59kNWk+bS99fZpmZ +J2y5ejAGMR9w8grugM2ZRRJf3heUdWN8WVFVxShIZ5koo7vWEEkv2ol8dQ8RFM/DHvbYoAvh0i RGoWtzVn87Du++5IoU61r/odTKKto68SvQZjzBzujPgnoOOAeHnSrz1dpujW2wDQzabIXDrwX4Q == X-Received: by 2002:ac8:4cc7:0:b0:3ab:2a7f:83e4 with SMTP id l7-20020ac84cc7000000b003ab2a7f83e4mr41907815qtv.35.1674654981842; Wed, 25 Jan 2023 05:56:21 -0800 (PST) X-Google-Smtp-Source: AMrXdXvsSokmsF+dOXtA1SbQyTYzhB4iN3NlBIRXpdhuBGugAMtfoKYGkuWY+lO5pXfmPanhHtr1kw== X-Received: by 2002:ac8:4cc7:0:b0:3ab:2a7f:83e4 with SMTP id l7-20020ac84cc7000000b003ab2a7f83e4mr41907793qtv.35.1674654981523; Wed, 25 Jan 2023 05:56:21 -0800 (PST) Received: from localhost (95.72.115.87.dyn.plus.net. [87.115.72.95]) by smtp.gmail.com with ESMTPSA id f14-20020a37ad0e000000b0070495934152sm3534712qkm.48.2023.01.25.05.56.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Jan 2023 05:56:21 -0800 (PST) From: Andrew Burgess To: gdb-patches@sourceware.org Cc: Andrew Burgess Subject: [PATCHv2 3/3] gdb/tui: don't leak the known_window_types map Date: Wed, 25 Jan 2023 13:56:11 +0000 Message-Id: <39fcef41919b141f6f1cd48d6a4b6f4d3b22ded3.1674654912.git.aburgess@redhat.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: References: MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This commit finishes the task that was started in the previous commit. Now that all Python TUI window factories are correctly deleted when the Python interpreter is shut down, we no longer need to dynamically allocate the known_window_types map in tui-layout.c This commit changes known_window_types to a statically allocated data structure, removes the dynamic allocation from initialize_known_windows, and then replaces lots of '->' with '.' throughout this file. There should be no user visible changes after this commit. --- gdb/tui/tui-layout.c | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index b895e00a80d..b65314ec30b 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -344,14 +344,9 @@ make_standard_window (const char *) return tui_win_list[V]; } -/* A map holding all the known window types, keyed by name. Note that - this is heap-allocated and "leaked" at gdb exit. This avoids - ordering issues with destroying elements in the map at shutdown. - In particular, destroying this map can occur after Python has been - shut down, causing crashes if any window destruction requires - running Python code. */ +/* A map holding all the known window types, keyed by name. */ -static std::unordered_map *known_window_types; +static std::unordered_map known_window_types; /* Helper function that returns a TUI window, given its name. */ @@ -362,8 +357,8 @@ tui_get_window_by_name (const std::string &name) if (name == window->name ()) return window; - auto iter = known_window_types->find (name); - if (iter == known_window_types->end ()) + auto iter = known_window_types.find (name); + if (iter == known_window_types.end ()) error (_("Unknown window type \"%s\""), name.c_str ()); tui_win_info *result = iter->second (name.c_str ()); @@ -377,20 +372,18 @@ tui_get_window_by_name (const std::string &name) static void initialize_known_windows () { - known_window_types = new std::unordered_map; - - known_window_types->emplace (SRC_NAME, + known_window_types.emplace (SRC_NAME, make_standard_window); - known_window_types->emplace (CMD_NAME, + known_window_types.emplace (CMD_NAME, make_standard_window); - known_window_types->emplace (DATA_NAME, + known_window_types.emplace (DATA_NAME, make_standard_window); - known_window_types->emplace (DISASSEM_NAME, + known_window_types.emplace (DISASSEM_NAME, make_standard_window); - known_window_types->emplace (STATUS_NAME, + known_window_types.emplace (STATUS_NAME, make_standard_window); } @@ -422,11 +415,11 @@ tui_register_window (const char *name, window_factory &&factory) this far then NAME must be a user defined window. Remove any existing factory and replace it with this new version. */ - auto iter = known_window_types->find (name); - if (iter != known_window_types->end ()) - known_window_types->erase (iter); + auto iter = known_window_types.find (name); + if (iter != known_window_types.end ()) + known_window_types.erase (iter); - known_window_types->emplace (std::move (name_copy), + known_window_types.emplace (std::move (name_copy), std::move (factory)); } @@ -1207,8 +1200,8 @@ initialize_layouts () static bool validate_window_name (const std::string &name) { - auto iter = known_window_types->find (name); - return iter != known_window_types->end (); + auto iter = known_window_types.find (name); + return iter != known_window_types.end (); } /* Implementation of the "tui new-layout" command. */ -- 2.25.4