From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#9006: 24.0.50; Abort in unshow_buffer/kill-buffer Date: Sun, 10 Jul 2011 15:30:33 +0200 Message-ID: <4E19A979.3070805@gmx.at> References: <877h7wxqjv.fsf@escher.fritz.box> <4E1429F3.1010305@gmx.at> <87oc17xlmu.fsf@escher.fritz.box> <4E156D17.8020804@gmx.at> <871uy2qvv6.fsf@escher.fritz.box> <4E15D520.4030809@gmx.at> <87mxgobcj6.fsf@escher.fritz.box> <4E1814F7.4060002@gmx.at> <87r55zekei.fsf@escher.fritz.box> <4E18510F.7070506@gmx.at> <87wrfrmnbv.fsf@escher.fritz.box> <87sjqfmm2n.fsf@escher.fritz.box> <4E1969EE.7040201@gmx.at> <87d3hiqvos.fsf@escher.fritz.box> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080109050208000104070104" X-Trace: dough.gmane.org 1310304845 403 80.91.229.12 (10 Jul 2011 13:34:05 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 10 Jul 2011 13:34:05 +0000 (UTC) Cc: 9006@debbugs.gnu.org To: Stephen Berman Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jul 10 15:34:00 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Qfu91-00049b-1L for geb-bug-gnu-emacs@m.gmane.org; Sun, 10 Jul 2011 15:33:59 +0200 Original-Received: from localhost ([::1]:45197 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qfu8z-0006kd-U3 for geb-bug-gnu-emacs@m.gmane.org; Sun, 10 Jul 2011 09:33:58 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:41812) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qfu6C-0006JV-5T for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2011 09:31:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qfu6A-0003ay-Lw for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2011 09:31:03 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:44075) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qfu6A-0003as-AY for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2011 09:31:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1Qfu69-00040z-W6; Sun, 10 Jul 2011 09:31:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 10 Jul 2011 13:31:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 9006 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 9006-submit@debbugs.gnu.org id=B9006.131030464615411 (code B ref 9006); Sun, 10 Jul 2011 13:31:01 +0000 Original-Received: (at 9006) by debbugs.gnu.org; 10 Jul 2011 13:30:46 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qfu5u-00040W-8s for submit@debbugs.gnu.org; Sun, 10 Jul 2011 09:30:46 -0400 Original-Received: from mailout-de.gmx.net ([213.165.64.23]) by debbugs.gnu.org with smtp (Exim 4.69) (envelope-from ) id 1Qfu5s-0003yT-3R for 9006@debbugs.gnu.org; Sun, 10 Jul 2011 09:30:45 -0400 Original-Received: (qmail invoked by alias); 10 Jul 2011 13:30:37 -0000 Original-Received: from 62-47-43-232.adsl.highway.telekom.at (EHLO [62.47.43.232]) [62.47.43.232] by mail.gmx.net (mp071) with SMTP; 10 Jul 2011 15:30:37 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX1+pxf1jQMmp+fyADf1DX8NOAT0HI6t8lKGgK7wYxb or3mfoj/PHsFUV User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) In-Reply-To: <87d3hiqvos.fsf@escher.fritz.box> X-Y-GMX-Trusted: 0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Sun, 10 Jul 2011 09:31:01 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:48464 Archived-At: This is a multi-part message in MIME format. --------------080109050208000104070104 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit > Is window-point set to 1 as a side effect of making the temporary > buffer? No. It happens because I used BEG instead of the buffer's point. >> Rather _you_ did set the old >> buffer's window point to 1 and it stays put there when you set w->buffer >> to old_buffer upon exiting `vertical-motion'. > > Do you have a suggestion how to reset point? I attached I patch. It compiles but is hardly trustworthy. For example, old_buffer might have got killed in the meantime. > /* If select_window is called with inhibit_point_swap non-zero it will > not store point of the old selected window's buffer back into that > window's pointm slot. This is needed by Fset_window_configuration to > avoid that the display routine is called with selected_window set to > Qnil causing a subsequent crash. */ > > However, when I set a conditional breakpoint inhibit_point_swap!=0 this > did not interrupt execution, whereas with breakpoint select_window, > execution interrupts with inhibit_point_swap == 0, so I guess I don't > understand the comment. IIRC this part is only relevant when you restore a window configuration, for example, when leaving a `save-window-excursion'. But I wouldn't believe my own comments. martin --------------080109050208000104070104 Content-Type: text/plain; name="indent.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="indent.diff" *** src/indent.c 2011-07-10 08:20:10 +0000 --- src/indent.c 2011-07-10 13:03:07 +0000 *************** *** 1984,1991 **** struct it it; struct text_pos pt; struct window *w; ! Lisp_Object old_buffer; ! struct gcpro gcpro1; Lisp_Object lcols = Qnil; double cols IF_LINT (= 0); --- 1984,1991 ---- struct it it; struct text_pos pt; struct window *w; ! Lisp_Object old_buffer, old_pointm; ! struct gcpro gcpro1, gcpro2; Lisp_Object lcols = Qnil; double cols IF_LINT (= 0); *************** *** 2005,2016 **** w = XWINDOW (window); old_buffer = Qnil; ! GCPRO1 (old_buffer); if (XBUFFER (w->buffer) != current_buffer) { /* Set the window's buffer temporarily to the current buffer. */ old_buffer = w->buffer; XSETBUFFER (w->buffer, current_buffer); } if (noninteractive) --- 2005,2019 ---- w = XWINDOW (window); old_buffer = Qnil; ! GCPRO2 (old_buffer, old_pointm); if (XBUFFER (w->buffer) != current_buffer) { /* Set the window's buffer temporarily to the current buffer. */ old_buffer = w->buffer; + old_pointm = w->pointm; XSETBUFFER (w->buffer, current_buffer); + set_marker_both + (w->pointm, w->buffer, BUF_PT (current_buffer), BUF_PT_BYTE (current_buffer)); } if (noninteractive) *************** *** 2131,2137 **** } if (BUFFERP (old_buffer)) ! w->buffer = old_buffer; RETURN_UNGCPRO (make_number (it.vpos)); } --- 2134,2143 ---- } if (BUFFERP (old_buffer)) ! { ! w->buffer = old_buffer; ! w->pointm = old_pointm; ! } RETURN_UNGCPRO (make_number (it.vpos)); } --------------080109050208000104070104--