From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Neil Jerram" Newsgroups: gmane.lisp.guile.devel Subject: Re: array handles and non-local exits Date: Thu, 18 Sep 2008 10:17:45 +0100 Message-ID: <49dd78620809180217p21c36802me305270af14a6f95@mail.gmail.com> References: <49dd78620809151317i3421081ey3337d678477046ab@mail.gmail.com> <87ljxsv80p.fsf@gnu.org> <49dd78620809171232n745ac8ecgd2c3936989ce723b@mail.gmail.com> <87myi5g98g.fsf@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: ger.gmane.org 1221729687 15403 80.91.229.12 (18 Sep 2008 09:21:27 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 18 Sep 2008 09:21:27 +0000 (UTC) Cc: guile-devel@gnu.org To: "=?ISO-8859-1?Q?Ludovic_Court=E8s?=" Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Thu Sep 18 11:22:22 2008 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1KgFiK-00025S-PH for guile-devel@m.gmane.org; Thu, 18 Sep 2008 11:22:17 +0200 Original-Received: from localhost ([127.0.0.1]:56453 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KgFhJ-0006UT-DL for guile-devel@m.gmane.org; Thu, 18 Sep 2008 05:21:13 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KgFe1-0003fx-EH for guile-devel@gnu.org; Thu, 18 Sep 2008 05:17:49 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KgFe0-0003eW-Hd for guile-devel@gnu.org; Thu, 18 Sep 2008 05:17:48 -0400 Original-Received: from [199.232.76.173] (port=60487 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KgFdz-0003eP-VC for guile-devel@gnu.org; Thu, 18 Sep 2008 05:17:48 -0400 Original-Received: from rv-out-0708.google.com ([209.85.198.248]:40605) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KgFe0-0005Zd-4Q for guile-devel@gnu.org; Thu, 18 Sep 2008 05:17:48 -0400 Original-Received: by rv-out-0708.google.com with SMTP id k29so4065193rvb.6 for ; Thu, 18 Sep 2008 02:17:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=Kppbmg80TLgizwy+UZ2D39LjOi73AsJIW0k0S40JkFE=; b=dhB7UTqor33CQ7385HSZ788YMLyjpiOsevo2pr6EbMwIjRq+h1RD7LbbB5OznryU9J J8OS/QbzXNO3lOOVIjfeJuJxzDXa06//xlnii1QsVVLjV7P1j6iiISaM1aA/bLrDuok8 8ylxzTP616H35uOWTGWTh2bQcS2TTqbxjZkfs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=CxaTJ2e2FIXzOtPDHu/LnCaTEgdMh/gJfbV5KzXC9mhvXkv88kkc1Ds5rOaN1gAB0P mt8cOvjRE4Rh0QIPUisob9qT1ypTMeelQxOEnRUcEstftk2YVHlTmwwpbkD8n0W2qDfq w2xucPuM0w1YTKcOpTVQrAe3ILQKtAiS4lfcI= Original-Received: by 10.141.52.5 with SMTP id e5mr7254695rvk.125.1221729465979; Thu, 18 Sep 2008 02:17:45 -0700 (PDT) Original-Received: by 10.140.142.15 with HTTP; Thu, 18 Sep 2008 02:17:45 -0700 (PDT) In-Reply-To: <87myi5g98g.fsf@gnu.org> Content-Disposition: inline X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:7720 Archived-At: 2008/9/18 Ludovic Court=E8s : > > I submitted this bug: > > https://savannah.gnu.org/bugs/index.php?24292 That's great, thanks. > I would suggest that we drop that mention of dynwinds from the manual. In my view, this part is still useful: "You must take care to always unreserve an array after reserving it, also in the presence of non-local exits. To simplify this, reserving and unreserving work like a dynwind context (see Dynamic Wind): a call to scm_array_get_handle can be thought of as beginning a dynwind context and scm_array_handle_release as ending it. When a non-local exit happens between these two calls, the array is implicitely unreserved. That is, you need to properly pair reserving and unreserving in your code, but you don't need to worry about non-local exits." But this part is misleading and can be removed: "These calls and other pairs of calls that establish dynwind contexts need to be properly nested. If you begin a context prior to reserving an array, you need to unreserve the array before ending the context. Likewise, when reserving two or more arrays in a certain order, you need to unreserve them in the opposite order." Is that what you had in mind? Neil