From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Kenichi Handa Newsgroups: gmane.emacs.bugs Subject: Re: [ihs_4664@yahoo.com: Re: Crash calling md5 for a list of buffers] Date: Fri, 23 Jan 2004 09:22:45 +0900 (JST) Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Message-ID: <200401230022.JAA02106@etlken.m17n.org> References: NNTP-Posting-Host: deer.gmane.org Mime-Version: 1.0 (generated by SEMI 1.14.3 - "Ushinoya") Content-Type: text/plain; charset=US-ASCII X-Trace: sea.gmane.org 1074818134 17335 80.91.224.253 (23 Jan 2004 00:35:34 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Fri, 23 Jan 2004 00:35:34 +0000 (UTC) Cc: rms@gnu.org, handa@m17n.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jan 23 01:35:24 2004 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1AjpIB-0001uS-00 for ; Fri, 23 Jan 2004 01:35:23 +0100 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.24) id 1AjpFg-0005oZ-QF for geb-bug-gnu-emacs@m.gmane.org; Thu, 22 Jan 2004 19:32:48 -0500 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.24) id 1AjpDk-0005U3-Fk for bug-gnu-emacs@gnu.org; Thu, 22 Jan 2004 19:30:48 -0500 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.24) id 1Ajp6p-0004gd-4m for bug-gnu-emacs@gnu.org; Thu, 22 Jan 2004 19:24:11 -0500 Original-Received: from [192.47.44.130] (helo=tsukuba.m17n.org) by monty-python.gnu.org with esmtp (Exim 4.24) id 1Ajp62-0004OV-4v; Thu, 22 Jan 2004 19:22:50 -0500 Original-Received: from fs.m17n.org (fs.m17n.org [192.47.44.2]) by tsukuba.m17n.org (8.11.6p2/3.7W-20010518204228) with ESMTP id i0N0Mjh04164; Fri, 23 Jan 2004 09:22:45 +0900 (JST) (envelope-from handa@m17n.org) Original-Received: from etlken.m17n.org (etlken.m17n.org [192.47.44.125]) by fs.m17n.org (8.11.6p2/3.7W-20010823150639) with ESMTP id i0N0Mjc12786; Fri, 23 Jan 2004 09:22:45 +0900 (JST) Original-Received: (from handa@localhost) by etlken.m17n.org (8.8.8+Sun/3.7W-2001040620) id JAA02106; Fri, 23 Jan 2004 09:22:45 +0900 (JST) Original-To: bug-gnu-emacs@gnu.org In-reply-to: (message from Richard Stallman on Thu, 22 Jan 2004 14:00:12 -0500) User-Agent: SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.2 Emacs/21.3 (sparc-sun-solaris2.6) MULE/5.0 (SAKAKI) X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.2 Precedence: list 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 Xref: main.gmane.org gmane.emacs.bugs:6694 X-Report-Spam: http://spam.gmane.org/gmane.emacs.bugs:6694 In article , Richard Stallman writes: > Can you take a look at this? > ------- Start of forwarded message ------- > To: gnu-emacs-bug@moderators.isc.org > From: Kevin Rodgers > Newsgroups: gnu.emacs.bug > Date: Wed, 21 Jan 2004 10:20:41 -0700 [...] > Subject: Re: Crash calling md5 for a list of buffers [...] >> Try to eval (mapcar '(lambda (b) (md5 b nil nil 'raw-text)) (buffer-list)). >> (mapcar 'md5 (buffer-list)) doesn't work for all buffers (really I don't >> understand why - probably the coding system determined automagically is >> not always valid for Fmd5). I found that function md5 (in fns.c) doesn't pay attention to the case that the current buffer is different from OBJECT arg. Coding system has nothing to do with this bug. As I've just committed the atttached change, please try again. As this bug is serious, I committed it also to RC branch. > There is something screwy with that file that causes Emacs to > think it has 1 more character (459097) than it really does (459096). That's normal because buffer position starts from 1, not 0. --- Ken'ichi HANDA handa@m17n.org 2004-01-23 Kenichi Handa * fns.c (Fmd5): If OBJECT is a buffer different from the current one, set buffer to OBJECT temporarily. Index: fns.c =================================================================== RCS file: /cvsroot/emacs/emacs/src/fns.c,v retrieving revision 1.354 diff -u -c -r1.354 fns.c cvs server: conflicting specifications of output style *** fns.c 29 Dec 2003 13:51:54 -0000 1.354 --- fns.c 23 Jan 2004 00:09:20 -0000 *************** *** 5454,5465 **** } else { CHECK_BUFFER (object); bp = XBUFFER (object); if (NILP (start)) ! b = BUF_BEGV (bp); else { CHECK_NUMBER_COERCE_MARKER (start); --- 5454,5471 ---- } else { + struct buffer *prev = current_buffer; + + record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); + CHECK_BUFFER (object); bp = XBUFFER (object); + if (bp != current_buffer) + set_buffer_internal (bp); if (NILP (start)) ! b = BEGV; else { CHECK_NUMBER_COERCE_MARKER (start); *************** *** 5467,5473 **** } if (NILP (end)) ! e = BUF_ZV (bp); else { CHECK_NUMBER_COERCE_MARKER (end); --- 5473,5479 ---- } if (NILP (end)) ! e = ZV; else { CHECK_NUMBER_COERCE_MARKER (end); *************** *** 5477,5483 **** if (b > e) temp = b, b = e, e = temp; ! if (!(BUF_BEGV (bp) <= b && e <= BUF_ZV (bp))) args_out_of_range (start, end); if (NILP (coding_system)) --- 5483,5489 ---- if (b > e) temp = b, b = e, e = temp; ! if (!(BEGV <= b && e <= ZV)) args_out_of_range (start, end); if (NILP (coding_system)) *************** *** 5544,5549 **** --- 5550,5560 ---- } object = make_buffer_string (b, e, 0); + if (prev != current_buffer) + set_buffer_internal (prev); + /* Discard the unwind protect for recovering the current + buffer. */ + specpdl_ptr--; if (STRING_MULTIBYTE (object)) object = code_convert_string1 (object, coding_system, Qnil, 1);