From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alan Third Newsgroups: gmane.emacs.bugs Subject: bug#23856: [PATCH] Remove separate pool for popup dialogs (bug#23856) Date: Wed, 29 Jun 2016 20:32:22 +0100 Message-ID: <20160629193222.GA95960@breton.holly.idiocy.org> References: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1467228812 24477 80.91.229.3 (29 Jun 2016 19:33:32 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 29 Jun 2016 19:33:32 +0000 (UTC) Cc: 23856@debbugs.gnu.org To: Alf =?UTF-8?Q?Lerv=C3=A5g?= Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jun 29 21:33:23 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bILEY-0006Mr-JA for geb-bug-gnu-emacs@m.gmane.org; Wed, 29 Jun 2016 21:33:14 +0200 Original-Received: from localhost ([::1]:45500 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bILEX-000055-IK for geb-bug-gnu-emacs@m.gmane.org; Wed, 29 Jun 2016 15:33:13 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58181) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bILER-000050-Iz for bug-gnu-emacs@gnu.org; Wed, 29 Jun 2016 15:33:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bILEM-0000uY-EX for bug-gnu-emacs@gnu.org; Wed, 29 Jun 2016 15:33:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:48006) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bILEM-0000u6-9d for bug-gnu-emacs@gnu.org; Wed, 29 Jun 2016 15:33:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bILEM-0003tp-2O for bug-gnu-emacs@gnu.org; Wed, 29 Jun 2016 15:33:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 29 Jun 2016 19:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23856 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed Original-Received: via spool by 23856-submit@debbugs.gnu.org id=B23856.146722875314948 (code B ref 23856); Wed, 29 Jun 2016 19:33:02 +0000 Original-Received: (at 23856) by debbugs.gnu.org; 29 Jun 2016 19:32:33 +0000 Original-Received: from localhost ([127.0.0.1]:60343 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bILDt-0003t2-0J for submit@debbugs.gnu.org; Wed, 29 Jun 2016 15:32:33 -0400 Original-Received: from mail-wm0-f68.google.com ([74.125.82.68]:33663) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bILDs-0003sq-BX for 23856@debbugs.gnu.org; Wed, 29 Jun 2016 15:32:32 -0400 Original-Received: by mail-wm0-f68.google.com with SMTP id r201so16721563wme.0 for <23856@debbugs.gnu.org>; Wed, 29 Jun 2016 12:32:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=6NAOtwIlEDMCxSp/5zO3SCSfyiT21bufzVVSJzlyovw=; b=mjcbjVmX3w5KqV4Z/BEXzKuE2QkCwC3CDdD5Q8cbcRGmP3oAgQr+R5bXMMqr/IiwYz s9Z91mhl3nW/BzGdiu0WnAYT6SjJUGNpdbmfeXkcW8qpTBcWEYn+rQhpXM0e+75U7HE2 mT4nFxIdzX/ptChZ5Cgada7G0jb5SFYi4m1viGGFfJWHVon52aDwVM7ZxfQJmC+SBMKq desQCjkhqahyBaEqcxEDLKqyWgB8o3QuU9iD7J59fQ5yFNXxnOc5Nvydx0PwhD3uU0bc KwAWCdjguMTavbAwtI0GflsLSlp67bA5KhdT2QPgkVWNRYZYkPHm3VzfQo3I/aVicR6v /miA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=6NAOtwIlEDMCxSp/5zO3SCSfyiT21bufzVVSJzlyovw=; b=YqDIx0ZZJJCcTseTzNq7WMh8s4DptmuvGxjHDRbPFge805hMM0AsCDmEXYOp9aot6V 7gJJMH4oh8ubyFFMS0WmvTTMlHIgSw9DEtsPcuUMSNN77Q+LwRzm2xCqJjmGDCSzIFtR 3oQ9PorE90CXDxWxXcDFghCEfegZ3oJVkLLbeU1mbIGunMqt9cvZOdiliDefnfr9ylJx RfWZmWjI5QSp4qLWIObrnrlunO888UgVePxGNIDY/hYTz57A1bXHY6Q2CzhRQkdlXM9z fKdzH3QC0u4peXItVWs457CWcdQfnDxJXlKVAzfPpPHIYpE9WLRQoPue6eqUE4MXnYSb N7vQ== X-Gm-Message-State: ALyK8tKv6Wrppplhuzq6bPEznQkbb5phye6GsU+M7cu08DjulDXP4zfJ9+1XU6+HtXJERg== X-Received: by 10.28.132.149 with SMTP id g143mr5220837wmd.100.1467228745543; Wed, 29 Jun 2016 12:32:25 -0700 (PDT) Original-Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-ac92-b5d8-4ccd-40fc.holly.idiocy.org. [2001:8b0:3f8:8129:ac92:b5d8:4ccd:40fc]) by smtp.gmail.com with ESMTPSA id v70sm5221555wmf.18.2016.06.29.12.32.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Jun 2016 12:32:24 -0700 (PDT) Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:120217 Archived-At: * src/nsmenu.m (pop_down_menu, ns_popup_dialog): Remove references to autorelease pool and Popdown_data struct. --- src/nsmenu.m | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/src/nsmenu.m b/src/nsmenu.m index 7d340e8..12af38b 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -1426,29 +1426,19 @@ - (NSRect) frame ========================================================================== */ -struct Popdown_data -{ - NSAutoreleasePool *pool; - EmacsDialogPanel *dialog; -}; - static void pop_down_menu (void *arg) { - struct Popdown_data *unwind_data = arg; + EmacsDialogPanel *panel = arg; - block_input (); if (popup_activated_flag) { - EmacsDialogPanel *panel = unwind_data->dialog; + block_input (); popup_activated_flag = 0; [panel close]; - [unwind_data->pool release]; [[FRAME_NS_VIEW (SELECTED_FRAME ()) window] makeKeyWindow]; + unblock_input (); } - - xfree (unwind_data); - unblock_input (); } @@ -1459,7 +1449,6 @@ - (NSRect) frame Lisp_Object tem, title; NSPoint p; BOOL isQ; - NSAutoreleasePool *pool; NSTRACE ("ns_popup_dialog"); @@ -1479,18 +1468,13 @@ - (NSRect) frame contents = list2 (title, Fcons (build_string ("Ok"), Qt)); block_input (); - pool = [[NSAutoreleasePool alloc] init]; dialog = [[EmacsDialogPanel alloc] initFromContents: contents isQuestion: isQ]; { ptrdiff_t specpdl_count = SPECPDL_INDEX (); - struct Popdown_data *unwind_data = xmalloc (sizeof (*unwind_data)); - - unwind_data->pool = pool; - unwind_data->dialog = dialog; - record_unwind_protect_ptr (pop_down_menu, unwind_data); + record_unwind_protect_ptr (pop_down_menu, dialog); popup_activated_flag = 1; tem = [dialog runDialogAt: p]; unbind_to (specpdl_count, Qnil); /* calls pop_down_menu */ -- I'm unsure what the purpose of this autorelease pool is. I guess it's supposed to be so that the dialog object always get released correctly, but it seems to be broken. I've just removed it, which I guess may introduce a memory leak, but I don't know how to check. -- Alan Third