From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Marius Vollmer Newsgroups: gmane.lisp.guile.devel Subject: Re: port initialization? Date: 08 Aug 2002 22:31:34 +0200 Sender: guile-devel-admin@gnu.org Message-ID: <87lm7h2iu1.fsf@zagadka.ping.de> References: <15693.15724.416839.636665@blauw.xs4all.nl> <15698.51215.103077.669940@blauw.xs4all.nl> NNTP-Posting-Host: localhost.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: main.gmane.org 1028838680 9917 127.0.0.1 (8 Aug 2002 20:31:20 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Thu, 8 Aug 2002 20:31:20 +0000 (UTC) Cc: Marius Vollmer , guile-devel@gnu.org Return-path: Original-Received: from fencepost.gnu.org ([199.232.76.164]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 17ctwD-0002Zf-00 for ; Thu, 08 Aug 2002 22:31:18 +0200 Original-Received: from localhost ([127.0.0.1] helo=fencepost.gnu.org) by fencepost.gnu.org with esmtp (Exim 3.35 #1 (Debian)) id 17ctwy-0005tJ-00; Thu, 08 Aug 2002 16:32:04 -0400 Original-Received: from dialin.speedway43.dip164.dokom.de ([195.138.43.164] helo=zagadka.ping.de) by fencepost.gnu.org with smtp (Exim 3.35 #1 (Debian)) id 17ctwV-0005qz-00 for ; Thu, 08 Aug 2002 16:31:35 -0400 Original-Received: (qmail 14555 invoked by uid 1000); 8 Aug 2002 20:31:34 -0000 Original-To: hanwen@cs.uu.nl In-Reply-To: <15698.51215.103077.669940@blauw.xs4all.nl> Original-Lines: 31 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Errors-To: guile-devel-admin@gnu.org X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: Developers list for Guile, the GNU extensibility library List-Unsubscribe: , List-Archive: Xref: main.gmane.org gmane.lisp.guile.devel:1023 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.devel:1023 Han-Wen Nienhuys writes: > marius.vollmer@uni-dortmund.de writes: > >> z = scm_cell (scm_tc16_strport, 0); > >> This looks like fishy code to me. When scm_add_to_port_table triggers > >> GC then it will see the (scm_tc16_strport, 0) cell, which is (or > >> should be) invalid. > > > >Yes, but the GC will not notice since "z" still refers to it and > >therefore the port cell wont be freedo > > That's not what I meant: z is a heap cell containing a null > pointer. GC-ing it will dump core. Sure? Closed ports do contain NULL pointers as well and the GC can handle them just fine. The second word of a cell that is tagged as a port is not a SCM. The GC knows that and will not try to follow it (except when freeing a port cell but then only when it is not flagged as closed). Am I missing somthing? > > > SCM port = scm_cell (scm_tc16_port, newport); > > > newport->port = port; > > > .. > > > } > > / > > This will leak newport when the call to scm_cell throws. > > scm_cell throws, what do you mean? I meant, when we run out of memory. Does scm_cell signal an error then (als scm_misc_error), or does it just abort the process? _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://mail.gnu.org/mailman/listinfo/guile-devel