From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Andreas Schwab Newsgroups: gmane.emacs.bugs Subject: bug#5984: Crash displaying composed characters Date: Wed, 21 Apr 2010 14:33:59 +0200 Message-ID: References: <831vea5fjh.fsf@gnu.org> <83vdbm3udi.fsf@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: dough.gmane.org 1271854985 20034 80.91.229.12 (21 Apr 2010 13:03:05 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 21 Apr 2010 13:03:05 +0000 (UTC) Cc: 5984@debbugs.gnu.org To: Juanma Barranquero Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Apr 21 15:03:00 2010 connect(): No such file or directory Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1O4ZZz-0004nf-VY for geb-bug-gnu-emacs@m.gmane.org; Wed, 21 Apr 2010 15:03:00 +0200 Original-Received: from localhost ([127.0.0.1]:34407 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O4ZZz-0004Le-0r for geb-bug-gnu-emacs@m.gmane.org; Wed, 21 Apr 2010 09:02:59 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O4ZWW-0002ML-7M for bug-gnu-emacs@gnu.org; Wed, 21 Apr 2010 08:59:24 -0400 Original-Received: from [140.186.70.92] (port=52039 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O4ZWT-0002K5-97 for bug-gnu-emacs@gnu.org; Wed, 21 Apr 2010 08:59:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O4ZWR-0005mQ-UQ for bug-gnu-emacs@gnu.org; Wed, 21 Apr 2010 08:59:21 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:60223) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O4ZWR-0005mL-Rr for bug-gnu-emacs@gnu.org; Wed, 21 Apr 2010 08:59:19 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1O4Z8w-0001uA-PR; Wed, 21 Apr 2010 08:35:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Andreas Schwab Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 21 Apr 2010 12:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 5984 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 5984-submit@debbugs.gnu.org id=B5984.12718532537293 (code B ref 5984); Wed, 21 Apr 2010 12:35:02 +0000 Original-Received: (at 5984) by debbugs.gnu.org; 21 Apr 2010 12:34:13 +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 1O4Z87-0001tY-V3 for submit@debbugs.gnu.org; Wed, 21 Apr 2010 08:34:12 -0400 Original-Received: from mail-out.m-online.net ([212.18.0.9]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O4Z83-0001tL-Ir for 5984@debbugs.gnu.org; Wed, 21 Apr 2010 08:34:08 -0400 Original-Received: from mail01.m-online.net (mail.m-online.net [192.168.3.149]) by mail-out.m-online.net (Postfix) with ESMTP id 32E761C15350; Wed, 21 Apr 2010 14:34:01 +0200 (CEST) Original-Received: from localhost (dynscan1.mnet-online.de [192.168.8.164]) by mail.m-online.net (Postfix) with ESMTP id B6D16902B1; Wed, 21 Apr 2010 14:34:01 +0200 (CEST) X-Virus-Scanned: amavisd-new at mnet-online.de Original-Received: from mail.mnet-online.de ([192.168.3.149]) by localhost (dynscan1.mnet-online.de [192.168.8.164]) (amavisd-new, port 10024) with ESMTP id Mve430iVmL1B; Wed, 21 Apr 2010 14:34:00 +0200 (CEST) Original-Received: from igel.home (ppp-88-217-108-166.dynamic.mnet-online.de [88.217.108.166]) by mail.mnet-online.de (Postfix) with ESMTP; Wed, 21 Apr 2010 14:34:00 +0200 (CEST) Original-Received: by igel.home (Postfix, from userid 501) id E2071CA297; Wed, 21 Apr 2010 14:33:59 +0200 (CEST) X-Yow: I Know A Joke In-Reply-To: (Juanma Barranquero's message of "Wed, 21 Apr 2010 12:48:37 +0200") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.96 (gnu/linux) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Wed, 21 Apr 2010 08:35:02 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) 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: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:36399 Archived-At: Juanma Barranquero writes: >> Please try this patch. > > With it, I don't get a crash, but an error: > > Wrong type argument: bufferp, 12846208 Here's an updated patch. Andreas. === modified file 'src/composite.c' --- src/composite.c 2010-01-14 03:54:04 +0000 +++ src/composite.c 2010-04-21 12:10:13 +0000 @@ -986,20 +986,31 @@ autocmp_chars (cft_element, charpos, byt font_object = win->frame; gstring = Fcomposition_get_gstring (pos, make_number (to), font_object, string); - if (NILP (LGSTRING_ID (gstring))) + if (!NILP (LGSTRING_ID (gstring))) { - Lisp_Object args[6]; - - args[0] = Vauto_composition_function; - args[1] = AREF (elt, 2); - args[2] = pos; - args[3] = make_number (to); - args[4] = font_object; - args[5] = string; - gstring = safe_call (6, args); + if (NILP (string)) + TEMP_SET_PT_BOTH (pt, pt_byte); + return unbind_to (count, gstring); } + + /* Save point as marker before calling out to lisp. */ if (NILP (string)) - TEMP_SET_PT_BOTH (pt, pt_byte); + { + Lisp_Object m = Fmake_marker (); + set_marker_both (m, Qnil, pt, pt_byte); + record_unwind_protect (restore_point_unwind, m); + } + { + Lisp_Object args[6]; + + args[0] = Vauto_composition_function; + args[1] = AREF (elt, 2); + args[2] = pos; + args[3] = make_number (to); + args[4] = font_object; + args[5] = string; + gstring = safe_call (6, args); + } return unbind_to (count, gstring); } } === modified file 'src/fileio.c' --- src/fileio.c 2010-04-21 03:02:58 +0000 +++ src/fileio.c 2010-04-21 09:22:01 +0000 @@ -299,7 +299,7 @@ close_file_unwind (fd) /* Restore point, having saved it as a marker. */ -static Lisp_Object +Lisp_Object restore_point_unwind (location) Lisp_Object location; { === modified file 'src/lisp.h' --- src/lisp.h 2010-04-21 03:02:58 +0000 +++ src/lisp.h 2010-04-21 09:22:01 +0000 @@ -3061,6 +3061,7 @@ EXFUN (Ffile_readable_p, 1); EXFUN (Ffile_executable_p, 1); EXFUN (Fread_file_name, 6); extern Lisp_Object close_file_unwind P_ ((Lisp_Object)); +extern Lisp_Object restore_point_unwind P_ ((Lisp_Object)); extern void report_file_error P_ ((const char *, Lisp_Object)) NO_RETURN; extern int internal_delete_file P_ ((Lisp_Object)); extern void syms_of_fileio P_ ((void)); -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."