From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Calling Lisp in C functions Date: Wed, 22 Sep 2021 08:45:48 +0300 Message-ID: <83y27pw4c3.fsf@gnu.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="20081"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Yuan Fu Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Sep 22 07:47:17 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mSv6D-00054e-Bb for ged-emacs-devel@m.gmane-mx.org; Wed, 22 Sep 2021 07:47:17 +0200 Original-Received: from localhost ([::1]:59634 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mSv6B-0004sA-Bq for ged-emacs-devel@m.gmane-mx.org; Wed, 22 Sep 2021 01:47:15 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:48880) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mSv4p-000440-7d for emacs-devel@gnu.org; Wed, 22 Sep 2021 01:45:51 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:52742) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mSv4o-000830-WD; Wed, 22 Sep 2021 01:45:51 -0400 Original-Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:2249 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mSv4o-0007Lq-FK; Wed, 22 Sep 2021 01:45:50 -0400 In-Reply-To: (message from Yuan Fu on Tue, 21 Sep 2021 12:38:21 -0700) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:275287 Archived-At: > From: Yuan Fu > Date: Tue, 21 Sep 2021 12:38:21 -0700 > > What’s the best way to evaluate Lisp or call a Lisp function that could signal in a C function and then free allocated memory? I assume that I can’t just call the Lisp function and hope it doesn’t signal. You want to catch the errors in Lisp that you call from C? If so, use the safe_call functions we already have. If all you want is make sure memory will be allocated, but don't mind if the signal thrown by Lisp gets back to command loop, use record_unwind_protect to register a function which will release the memory.