From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.bugs Subject: bug#23386: Segfault when messing with font-backend Date: Sun, 10 Jul 2016 20:29:59 +0300 Message-ID: <73cd86e5-3c92-cb6a-3a7b-1a5ec82c05de@yandex.ru> References: <83y47zxi81.fsf@gnu.org> <87d1mmiq35.fsf@users.sourceforge.net> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1468171884 17289 80.91.229.3 (10 Jul 2016 17:31:24 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 10 Jul 2016 17:31:24 +0000 (UTC) Cc: 23386@debbugs.gnu.org To: npostavs@users.sourceforge.net, Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jul 10 19:31:14 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 1bMIZW-0005GK-9g for geb-bug-gnu-emacs@m.gmane.org; Sun, 10 Jul 2016 19:31:14 +0200 Original-Received: from localhost ([::1]:56140 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bMIZV-0007Np-Io for geb-bug-gnu-emacs@m.gmane.org; Sun, 10 Jul 2016 13:31:13 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:43859) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bMIZO-0007G7-Ko for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2016 13:31:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bMIZL-00024K-Fx for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2016 13:31:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:33180) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bMIZK-00023w-9J for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2016 13:31:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bMIZK-00012e-4I for bug-gnu-emacs@gnu.org; Sun, 10 Jul 2016 13:31:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Antipov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 10 Jul 2016 17:31:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23386 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed Original-Received: via spool by 23386-submit@debbugs.gnu.org id=B23386.14681718093943 (code B ref 23386); Sun, 10 Jul 2016 17:31:02 +0000 Original-Received: (at 23386) by debbugs.gnu.org; 10 Jul 2016 17:30:09 +0000 Original-Received: from localhost ([127.0.0.1]:45517 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bMIYT-00011X-Jn for submit@debbugs.gnu.org; Sun, 10 Jul 2016 13:30:09 -0400 Original-Received: from forward3h.cmail.yandex.net ([87.250.230.18]:42355) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bMIYR-0000zm-4L for 23386@debbugs.gnu.org; Sun, 10 Jul 2016 13:30:07 -0400 Original-Received: from smtp3h.mail.yandex.net (smtp3h.mail.yandex.net [IPv6:2a02:6b8:0:f05::117]) by forward3h.cmail.yandex.net (Yandex) with ESMTP id D79C820671; Sun, 10 Jul 2016 20:29:59 +0300 (MSK) Original-Received: from smtp3h.mail.yandex.net (localhost [127.0.0.1]) by smtp3h.mail.yandex.net (Yandex) with ESMTP id D5BA41B40311; Sun, 10 Jul 2016 20:29:59 +0300 (MSK) Original-Received: by smtp3h.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id zSLazC80Hk-TxHCXrqr; Sun, 10 Jul 2016 20:29:59 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client certificate not present) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1468171799; bh=ON6GM/NGwhYznZucIDW/pZi/gv5bWxrOhIcPRRhwFic=; h=Subject:To:References:Cc:From:Message-ID:Date:In-Reply-To; b=FHKCGt7/so7rRkDiLbA4CfMUaWUemFTfb4PPFRTp9+rX5P7ScfbLXWWZ5Qr4aTy3t k3boM64Y6lMyv6A/4Xr4Ca7XqKacei/NPGYKfl77Y3e2s3cjXYPs2ApNYDMKFfxElo TVn4+Eq7aNQm3jf82i/hdSp0EZ6bV8baDD2wKCiQ= Authentication-Results: smtp3h.mail.yandex.net; dkim=pass header.i=@yandex.ru X-Yandex-Suid-Status: 1 0,1 0,1 0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 In-Reply-To: <87d1mmiq35.fsf@users.sourceforge.net> 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:120796 Archived-At: On 07/09/2016 10:11 PM, npostavs@users.sourceforge.net wrote: > Here is a patch that attempts to fix the issue by resetting the font > after the backend is changed. It does let Emacs successfully open the > frame with the new font (no funny box characters in the modeline), but > I'm not sure if it's the best way of marking the font object invalid. IMHO the original trick (request to drop font backend when there is a font opened by using this backend) is practically meaningless, so why just not prohibit it explicitly? For example, with: diff --git a/src/frame.c b/src/frame.c index 22143ab..d8f89ed 100644 --- a/src/frame.c +++ b/src/frame.c @@ -3708,7 +3708,19 @@ x_set_font_backend (struct frame *f, Lisp_Object new_value, Lisp_Object old_valu return; if (FRAME_FONT (f)) - free_all_realized_faces (Qnil); + { + if (!NILP (new_value)) + { + Lisp_Object backend = FRAME_FONT (f)->props[FONT_TYPE_INDEX]; + + /* Do not release the backend used by F's default font. */ + if (NILP (Fmemq (backend, new_value))) + error ("Font backend '%s' is in use by font '%s'", + SDATA (SYMBOL_NAME (backend)), + SDATA (FRAME_FONT (f)->props[FONT_NAME_INDEX])); + } + free_all_realized_faces (Qnil); + } new_value = font_update_drivers (f, NILP (new_value) ? Qt : new_value); if (NILP (new_value)) Dmitry