From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 53456 invoked by alias); 25 Apr 2019 19:13:01 -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 53400 invoked by uid 89); 25 Apr 2019 19:13:00 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-5.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=dangerous, HX-Languages-Length:1183 X-HELO: gateway33.websitewelcome.com Received: from gateway33.websitewelcome.com (HELO gateway33.websitewelcome.com) (192.185.146.210) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 25 Apr 2019 19:12:58 +0000 Received: from cm11.websitewelcome.com (cm11.websitewelcome.com [100.42.49.5]) by gateway33.websitewelcome.com (Postfix) with ESMTP id 56A0D782E27 for ; Thu, 25 Apr 2019 14:12:57 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id JjnlhiqSSdnCeJjnlhU4DH; Thu, 25 Apr 2019 14:12:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=JRtPJYmrBm+jciR9lxTBDFgG+fD+3lMjE18X9JKahdc=; b=QI76N2wnuci/HQAr68mYlVzDQd isjJoP7twfCCW/C17KVOumbdiSnEkhA2DdBzRu+jyr0yB2lyF4LthwqIgQwalPOglB+Dy3N5nJZxK 9xR6eqZNkWJ8HeHtNZyrtFxTG; Received: from 97-122-168-123.hlrn.qwest.net ([97.122.168.123]:58986 helo=murgatroyd) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1hJjnl-001hOY-4S; Thu, 25 Apr 2019 14:12:57 -0500 From: Tom Tromey To: Jan Vrany Cc: gdb-patches@sourceware.org, Didier Nadeau Subject: Re: [RFC 1/8] Use std::map for MI commands in mi-cmds.c References: <20190418152337.6376-1-jan.vrany@fit.cvut.cz> <20190418152337.6376-2-jan.vrany@fit.cvut.cz> Date: Thu, 25 Apr 2019 19:13:00 -0000 In-Reply-To: <20190418152337.6376-2-jan.vrany@fit.cvut.cz> (Jan Vrany's message of "Thu, 18 Apr 2019 16:23:30 +0100") Message-ID: <87imv199vr.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2019-04/txt/msg00556.txt.bz2 >>>>> "Jan" == Jan Vrany writes: Jan> From: Didier Nadeau Jan> This changes the hashmap used in mi-cmds.c from a custom Jan> structure to std::map. This is done to be able to add new Jan> MI commands at runtime, the previous structure had a fixed Jan> size array. Thanks for doing this. Jan> +static std::map mi_cmd_table; My main concern about this approach is the lifetime of the mi_cmd. If running an MI command can change this table, then using a unique_ptr is dangerous, because this code hands out raw pointers which might become invalid. If that can't happen, then I guess that's fine. Otherwise it seems like shared_ptr is a better choice, provided mi_cmd_lookup also returns shared_ptr. What do you think? Jan> + std::string name (command->name); Jan> + Jan> + if (mi_cmd_table.find (name) != mi_cmd_table.end ()) Jan> + return false; Jan> + Jan> + mi_cmd_table[name] = std::move (command); Can gdb::string_view be used instead? That would avoid an allocation, and the code is already assuming that the strings live long enough. Tom