From patchwork Wed Dec 6 21:40:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 24764 Received: (qmail 85655 invoked by alias); 6 Dec 2017 21:41:03 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 85560 invoked by uid 89); 6 Dec 2017 21:41:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: sesbmg23.ericsson.net Received: from sesbmg23.ericsson.net (HELO sesbmg23.ericsson.net) (193.180.251.37) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 06 Dec 2017 21:41:00 +0000 Received: from ESESSHC024.ericsson.se (Unknown_Domain [153.88.183.90]) by sesbmg23.ericsson.net (Symantec Mail Security) with SMTP id 8E.50.00337.9E3682A5; Wed, 6 Dec 2017 22:40:57 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.90) with Microsoft SMTP Server (TLS) id 14.3.352.0; Wed, 6 Dec 2017 22:40:56 +0100 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [100.94.229.189] (129.192.64.65) by AMSPR07MB312.eurprd07.prod.outlook.com (2a01:111:e400:802f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.3; Wed, 6 Dec 2017 21:40:53 +0000 Subject: Re: [RFA 3/3] Remove cleanups from break-catch-syscall.c To: Sergio Durigan Junior CC: Tom Tromey , References: <20171018040645.7212-1-tom@tromey.com> <20171018040645.7212-3-tom@tromey.com> <280a7994-38a6-2138-b199-8902ee2651b0@ericsson.com> <87efo7elaa.fsf@redhat.com> From: Simon Marchi Message-ID: <49cd709f-c82e-a6e1-0d44-f8a6700764f5@ericsson.com> Date: Wed, 6 Dec 2017 16:40:43 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <87efo7elaa.fsf@redhat.com> X-ClientProxiedBy: BN6PR05CA0010.namprd05.prod.outlook.com (2603:10b6:405:39::23) To AMSPR07MB312.eurprd07.prod.outlook.com (2a01:111:e400:802f::24) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f988f1e4-b5e8-4e0d-e283-08d53cf20755 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603286); SRVR:AMSPR07MB312; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB312; 3:b9Lwnaucl+lHYIas16QfdlC+omhvk0YUeDjYfc2PvmOUmJfs9Vn6VaaDvPr6l07rQKdjfD0C+JA2Nl0XDjL1XUym2JZeN5UDXwoolGBRb+rGIBDBJ3V787lmDXz0mOcntb5IrWHwt8Pyw1MnMJp/oBT1k2KcGJKsG5QPnae19KVc//3/5W6BqZJru5eV119BGSsyoMMCspcleTeTj/J6klZxO6g6CyaO7nkOtnnDNRSvW7NRuH4XKRubOdooPTMa; 25:h0uAauQdRnb3OgcEL6D7Y4ZbvA+2x/9sUFFi5EHw1TEGSS3iOdadRqSwo8EBO1t2ru8BeRi56B7R/N8DjXYPi9LvFhJDCb3vAUkdWDnuzGVoOQmc2d+BoidW1Io29XWbm2hEnppt+iiQWVv1Y8pGufpzv83BhKPC5aOUPo9U0x3ltFFeAiYNbAw4j6+ZE87WTVuNmg6YkxSt7bLoO40AMbdDg4beagMdNDOb2ZW38Wt8pMpy+7gv7WC5WhrX0uOqCZoyy3hL+7xTmI/THnU15hf6eHUTEqcFLT6WlkjR5ZbU/gxzM/DJ6A3Qfd8/ayD2ZQx2MoIoC0bx5oXIuZKYrQ==; 31:j5wGPJqANxPiCkmnrU3WxbqtbQQFowbmOp/6uoiVb8UNsNI9YoJODY5m1rWwq4hFye//Fj20wE6F8CYgHdCcM19aWrUeybrDkz0uNJctee1Z0rqIQW9p14n+wwzzDuLOlAnJnP/uX8JCaOBwJ2SCWwZzSjY4kqVfT217rzwGCwx3jcBs0UvHnSC9jbLSZ8lxXiRMtAxbiR8/87dW0v/loGg9BOE9Zoqr6DOgBvMixns= X-MS-TrafficTypeDiagnostic: AMSPR07MB312: X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB312; 20:wzrPUIwuVa+F+fjQA++01RJF1mMitWjuf9GHfzPb9/UeGWYIjRc8ExlcJwD8ZDn8I6b2qwuZvK6xrFZjnh4PT2a5u3MvBbUh1vXux8HcK0/Jrs45iuiG0BlXI14S0IvWhR9NfkpTsNVEuyvAa4zoXXi3gkVxOa+ER8CmPK4RU0B8hWRFQHvl83naVK6rJMc4Zmco8+X6dgcL5YTU9t1cJbVUyGG1APeOZIIGP0ndt9MPsk3+wpHWCDxDo50jGzrxwYZofOaSAy1zcz+pHn1a1L61NdnZesPYG8ApVx4mlnsLFx905/sGO0QVrGrwy+CWCalo4tCqNzWTGs77AS53k2YyV4iAkUrFWRXfNlzWyT3PP0b//NGq9Un9bGAisI8PZ6Ph3lR7Eal/3c11NKeMBZNOWl0Gp8Wo/5sPpo4EU1X3KP6/E+VhiNxnFZdA3l1kzOcNVCrYns/WJw39yEDT19wXxzSyvhcxS3NNXxWuIl+DVwXqEKoLcTK/WZgHNpql; 4:KLc97n4lX8JaQEzunNHXMxEBKDV4G8a16SRigAq4RKP1yqTOrcJSmGuDtE5aTZHBMmLhwsHTaXmLfY2fO4sGrSUOb7QnoZm4Ve2IpvPI3kDj6+AaTeV+YaEvuZwZBtewU8PemaAV/b/tOj1QHpMhJX9ZQ4hg4JSdrgCaH5Ia2bGLONCxGP501VR1SuBalQUihHpzUSty3HHiGGbSZC17lgAbuq2Zrvh+Kj4pQK3WU9LKvsdg/XQRj+FtiVQ3VnC/PEZd3h+1GV+/YiXRtlnwMSs6UWm9/oFg5T8F6u9NJFQmvFkOFeDY5A6IZ7UKsrAfiEy5YMx3MySZ+Lq4ypr5W8/8Pth9YxgPYFXZ00ax7SU= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(37575265505322)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(5005006)(8121501046)(3231022)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123558100)(20161123564025)(20161123560025)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:AMSPR07MB312; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:AMSPR07MB312; X-Forefront-PRVS: 05134F8B4F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(376002)(366004)(39860400002)(346002)(43544003)(24454002)(189003)(199004)(377424004)(54534003)(51914003)(31686004)(4001150100001)(5660300001)(230783001)(50466002)(81156014)(8676002)(52146003)(23676004)(230700001)(65826007)(105586002)(2486003)(36756003)(52116002)(97736004)(7736002)(64126003)(81166006)(25786009)(68736007)(76176011)(93886005)(65956001)(2906002)(65806001)(66066001)(106356001)(83506002)(58126008)(53546010)(305945005)(53936002)(47776003)(33646002)(49976008)(31696002)(6916009)(8936002)(86362001)(478600001)(2950100002)(316002)(6666003)(575784001)(16576012)(6116002)(6486002)(229853002)(6246003)(16526018)(3846002)(4326008)(101416001)(78286006); DIR:OUT; SFP:1101; SCL:1; SRVR:AMSPR07MB312; H:[100.94.229.189]; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTVNQUjA3TUIzMTI7MjM6cjRvaHpERGlScnRNWURpOGQ0RnI5dEdWelRU?= =?utf-8?B?Zi9sTmdFWFo5K1dONDdmRVQ3U09JQUxnYjdiNmNDd3o3K1h3dTBqN295dm5W?= =?utf-8?B?cUlZRG4xNDdOT2orMER2KzRIUE5vQm5BMDhaNC9IRHVuclBrUGU0ZUNkMkp4?= =?utf-8?B?K2FsZUdHclEySGFHWjljQzREZWdKMlA3Z1ZFUk81M0ROVXB5eFJQb2tUU0NJ?= =?utf-8?B?U0NWUkpBclh3S1FVeTlnaUU2bk51NUx5ZWFOMDZkUlhGa2V5aVl2a1R5d2h0?= =?utf-8?B?WE5jRkxCWXZTdnBqUGN3LzhuUmdLRXdTcmF4UUd1SEZ3QmdCcllXM0t1Ky9S?= =?utf-8?B?NkQxaUJSUjBUYVg1WE4yNE53VzgzSGZ1cUhNTkc1V3FrS3FpdXR2R0F4ZDFV?= =?utf-8?B?QlpHZkdaSkoyTG56bVlSQ0VpOW9MRjFVRm1EWWpWbXhZVXhiVnp0a282M0t2?= =?utf-8?B?N1dFcU1tcWVLcUVzV0JpRk1tdVRhMEVpTTcybGhmR0JQeTFIOFZvL2JQSEJr?= =?utf-8?B?eE9IaW1Jd1ZZZnM1OHNEd09qOUFqMUMwOVo4SWlpWVBFbEJCalZPQkltck9U?= =?utf-8?B?bHAvUE1SUHVKMDBGam5SRXJ4Z3pQQjk5bVA2UnRVeldrckMwOHh5VU5kWDQ4?= =?utf-8?B?VE92RnRHWWdyRzliMXN0UFVmSXhOam5nOUVqMit5bmE5d3dyQVR0aGRidFRU?= =?utf-8?B?ZWJObWhqbDdaNWJORDUxWFZSTmhNamNBNFRPZThRblVvNHpkRTZVOU94OFFE?= =?utf-8?B?ZGtOUVdDSngwMUxXR21ySTk2Y0RjblJmeFBrZUF2RFgyQjB4eEVQd1JoTDdQ?= =?utf-8?B?ZWVjVTNRVm1hSHJrNVNzcFhOSUVjMXZLOWdnZnU1OWFJVXhFakJwMDNkTTZH?= =?utf-8?B?S2svMlc3QmRheld5cHdCVmdvWkVjbU45YUF6S3BGSE52cEJBZVRBYnE1eGJG?= =?utf-8?B?T3ppM2NtRmNMeWJRVk1nRENkMU84U21iNGYyNnhBN29FbUl3VTgvMjhVRzNG?= =?utf-8?B?MkE0dGlDVVd6d2ZQRjJlK25wZzk1NTk5VnBSMmJoclRzWEh3eHZRZDF0aThz?= =?utf-8?B?QlYwS2FBMGtqM0laLzVSU0dFY3hXM0VIckczeEFKT0hwdzE4U0Mybkp2NGlS?= =?utf-8?B?RXJsMGR3dC90cXNVMGhSTDJ0SHNTOE4xU05Hei9FRWRIak1La0ZLbk1NVkN2?= =?utf-8?B?UmYvYjVWY2J5dlRKdktzVFlZN3IzbUFkN3FsYzMvSzNQcGFWRWhnaFZ0ZHJh?= =?utf-8?B?dXY5cUdiTGgwM1BKYy80ZFJYUHFMZjJKaFBkdUJoNUw1b2trMHc3Ym9IU0NM?= =?utf-8?B?U3ZseUlRQnBaU2luR3ExVngyYldIUkhZUzVCcmFUUHBnUjgyVG5vcFBRUVhp?= =?utf-8?B?TFFaeTNJdU5vdjZyVGQ3VlhTUW9JV0lBZnR6RlhmdGxyZWJXRkVqakNuMFdL?= =?utf-8?B?ZWVlUGh3UlpQaVczUGZSNEREOUZjZlA0MUtGMHB3ZldXTld2SHNLMVVnR09B?= =?utf-8?B?dGI5YTFGV3Aza3VLeFArVmhTR21IRjJsR2pkOTR2UHIyc0ZvR291NEdzUlVa?= =?utf-8?B?TUVnQkQwb1lmQnBQU2JSdG4reUpWcGRYL2JPUnRZTDhXcEU3YWVoWG8xMzZ0?= =?utf-8?B?MEVUQlBzK2F5eFFwQnhxTHJLZ3JQTXU3MFgyWlZJUzF4RWh2dkpmdy9qc1cw?= =?utf-8?B?bTFQNHdDRStkaHc0K3R2WG5DNWx1dlQ1S29lTVNJb1FxdmxjK1JweXI1NlBj?= =?utf-8?B?bHVVeE1RcGNlbDZpWFZQaVQ3WlhNSS9HVm5GWkVRaTV0OC9vM0w2OXhOb2Rz?= =?utf-8?B?MmJtSlNBSXdCM0Q2TDBMZWNNZFlMZmRES0lFTG5LRXVYQi82d05wWm5LMVRv?= =?utf-8?B?dVA3dEtMeEcxLy84N3pzZFpWbzB1Tk4vR1lCV09zNVVLVnk4ZlJLNjc1NE1p?= =?utf-8?B?bklVQUtSQnR1Mm1reWJCRWhkVm9PUDdyOGZnT2VkcXBqUWU5TjlMY1NyV1lI?= =?utf-8?B?dWd5YlpYRU1yRGIyTXJtSVdrNHA2NTNKNkk4emlTWXhhT1M0K0hmbnA4Y1ov?= =?utf-8?B?WTlXekErVWdJWUw4ZWxBbm5ISHd1TEh3VlpVemZsSDB1aWJneFNZUndIWWZ2?= =?utf-8?B?Zz09?= X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB312; 6:cAnWBTd+RdJaV5CdHVwq8g7dyBvEllZpFY3UbiLMZStLp3ALHuKWhaPbXJSw5OhfIgD06xN45PAeafAJEy19f5O/F7sSIRxvG3bcziBPkqokhed1haUoMfECHLBwPSJ1o/XWMmQifBt56qV8sXZMhpszHoJ3S5irF5FfxdBZHUVaSG2ip3tqilf9RKcU7koSoD7ecgvVMhUTEOWkOziGdLB0Ug+1XUiHvp3pS6XcWrFwNo1SwHIBocDp8h9z4Y/P3N3NFZ/HYA2X/X6bQCt79rycqp7ZbkWMsltr5kta1AspoUvMkpkaxwF2Lnrn2bEYA6wqw0v+g7+Kr0zOHprWFMBUePLm5rbf9tXO3T4Q3M8=; 5:b5PV2TU1BdGLEWAizqiNdZjwrqlARWpP6A6+sSbS+nFYlHyQ31cc2p8cDj3OyQE3eYPmKtBZmhO9CQM7vyr4KP+AwDWgsjHkbj/pmoSgycgV4CHvQnZv/YjQV+UBsv0LseZatn0zXlBOGWBuwXeCBxJGx8GjDIl40x1EAVKI6EY=; 24:7Jcib4PRteEXzyKOSSwa/T6V+mP4WrM3DFeXRnclCHZYroVT87cQ5gRMmpsaibHl0rxOOCRChq791YQhLgYtmSd7JxXOADtFQg1kiCEUyE8=; 7:LMft/ZwX8R7mbpSqmCOBcodTOLDVI01LsR4iXJX2araVNEATORQ5tX1K4llaixq7VqyqDN42o8QJ1+bAtoSce7y703Vh5CzU67cLLfVdOcD+nKqVrkujVY3fwFG1P3I7IKQJUaRHZPYvI05rlmv14PTmIVI5sZGBthazwyDMNMNSV8UJJd98U15laY6eCrtwGAzAOLmGDCZuG4tliSo/qCaQj1LqpIVqT5RFDJBd5Nri+ofHEfcH9sZMHJOt4o9V SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2017 21:40:53.8114 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f988f1e4-b5e8-4e0d-e283-08d53cf20755 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR07MB312 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes On 2017-12-06 01:58 PM, Sergio Durigan Junior wrote: > On Friday, October 20 2017, Simon Marchi wrote: > >> On 2017-10-18 12:06 AM, Tom Tromey wrote: >>> This removes the remaining cleanups from break-catch-syscall.c by >>> storing temporary strings in a vector. >>> >>> ChangeLog >>> 2017-10-17 Tom Tromey >>> >>> * break-catch-syscall.c (catch_syscall_completer): Use >>> std::string, gdb::unique_xmalloc_ptr. >>> --- >>> gdb/ChangeLog | 5 +++++ >>> gdb/break-catch-syscall.c | 35 ++++++++++++++++++----------------- >>> 2 files changed, 23 insertions(+), 17 deletions(-) >>> >>> diff --git a/gdb/break-catch-syscall.c b/gdb/break-catch-syscall.c >>> index 01e761ce37..2bbfee0ac4 100644 >>> --- a/gdb/break-catch-syscall.c >>> +++ b/gdb/break-catch-syscall.c >>> @@ -560,9 +560,7 @@ catch_syscall_completer (struct cmd_list_element *cmd, >>> const char *text, const char *word) >>> { >>> struct gdbarch *gdbarch = get_current_arch (); >>> - struct cleanup *cleanups = make_cleanup (null_cleanup, NULL); >>> - const char **group_list = NULL; >>> - const char **syscall_list = NULL; >>> + gdb::unique_xmalloc_ptr group_list; >>> const char *prefix; >>> int i; >>> >>> @@ -575,34 +573,37 @@ catch_syscall_completer (struct cmd_list_element *cmd, >>> if (startswith (prefix, "g:") || startswith (prefix, "group:")) >>> { >>> /* Perform completion inside 'group:' namespace only. */ >>> - group_list = get_syscall_group_names (gdbarch); >>> + group_list.reset (get_syscall_group_names (gdbarch)); >>> if (group_list != NULL) >>> - complete_on_enum (tracker, group_list, word, word); >>> + complete_on_enum (tracker, group_list.get (), word, word); >>> } >>> else >>> { >>> /* Complete with both, syscall names and groups. */ >>> - syscall_list = get_syscall_names (gdbarch); >>> - group_list = get_syscall_group_names (gdbarch); >>> + gdb::unique_xmalloc_ptr syscall_list >>> + (get_syscall_names (gdbarch)); >>> + group_list.reset (get_syscall_group_names (gdbarch)); >>> + >>> + const char **group_ptr = group_list.get (); >>> + >>> + /* Hold on to strings while we're using them. */ >>> + std::vector holders; >>> >>> /* Append "group:" prefix to syscall groups. */ >>> - for (i = 0; group_list[i] != NULL; i++) >>> + for (i = 0; group_ptr[i] != NULL; i++) >>> { >>> - char *prefixed_group = xstrprintf ("group:%s", group_list[i]); >>> + std::string prefixed_group = string_printf ("group:%s", >>> + group_ptr[i]); >>> >>> - group_list[i] = prefixed_group; >>> - make_cleanup (xfree, prefixed_group); >>> + group_ptr[i] = prefixed_group.c_str (); >>> + holders.push_back (prefixed_group); >>> } >> >> Err, I think there's something that doesn't make sense here actually. We >> record in group_ptr[i] a pointer to the buffer of the temporary std::string, >> that gets deleted when we go out of scope (end of the iteration). That >> causes this fail: >> >> Running /home/emaisin/src/binutils-gdb/gdb/testsuite/gdb.base/catch-syscall.exp ... >> FAIL: gdb.base/catch-syscall.exp: complete catch syscall group suggests 'group:' prefix (pattern 2) > > Hey guys, > > Any news on this? I was about to report this regression, but it seems > you were already dealing with it here. > > Thanks, Seems like it fell between the cracks, I guess I thought Tom would take care of it and vice versa. Thanks for the reminder! I pushed it: From 9a93831ccc0ba3ba447552069f230e6d93dcbf3f Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Wed, 6 Dec 2017 16:27:33 -0500 Subject: [PATCH] Fix syscall group completion The test gdb.base/catch-syscall.exp has been failing since commit 3d415c26bad3a15eed00d2ddf85c4268df77a4cc Remove cleanups from break-catch-syscall.c The reason is that we are putting into the group_ptr array a pointer to the buffer of the local string object. If the string is small enough to fit in the internal string buffer (used for small string optimizations), the pointer will point to the local object directly. So even if we std::move the string to the vector, the pointer in group_ptr will still point to the local object. When we reuse that object (technically a new instance, but most likely the same memory) for the next syscall, we'll overwrite the previous string. The result is that we'll get less results than expected, since there will be duplicates. We'll also run into problems if we push the string to the vector, and then record the c_str () pointer using the string object in the vector. The vector might get reallocated, the string may move in memory, and our pointer in group_ptr will point to stale memory. Instead, we have to push all the strings first, then, when we know the vector won't change anymore, build the group_ptr array. This is what this patch does. gdb/ChangeLog: * break-catch-syscall.c (catch_syscall_completer): Get pointers to syscall group strings after building the string vector. --- gdb/ChangeLog | 5 +++++ gdb/break-catch-syscall.c | 12 ++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 93acc17..c9a4098 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-12-06 Simon Marchi + + * break-catch-syscall.c (catch_syscall_completer): Get pointers + to syscall group strings after building the string vector. + 2017-12-06 Pedro Alves * remote.c (remote_query_supported): Don't send "xmlRegisters=" if diff --git a/gdb/break-catch-syscall.c b/gdb/break-catch-syscall.c index a8312f2..dd7b379 100644 --- a/gdb/break-catch-syscall.c +++ b/gdb/break-catch-syscall.c @@ -559,7 +559,6 @@ catch_syscall_completer (struct cmd_list_element *cmd, struct gdbarch *gdbarch = get_current_arch (); gdb::unique_xmalloc_ptr group_list; const char *prefix; - int i; /* Completion considers ':' to be a word separator, so we use this to verify whether the previous word was a group prefix. If so, we @@ -587,14 +586,11 @@ catch_syscall_completer (struct cmd_list_element *cmd, std::vector holders; /* Append "group:" prefix to syscall groups. */ - for (i = 0; group_ptr[i] != NULL; i++) - { - std::string prefixed_group = string_printf ("group:%s", - group_ptr[i]); + for (int i = 0; group_ptr[i] != NULL; i++) + holders.push_back (string_printf ("group:%s", group_ptr[i])); - group_ptr[i] = prefixed_group.c_str (); - holders.push_back (std::move (prefixed_group)); - } + for (int i = 0; group_ptr[i] != NULL; i++) + group_ptr[i] = holders[i].c_str (); if (syscall_list != NULL) complete_on_enum (tracker, syscall_list.get (), word, word);