From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Marius Vollmer Newsgroups: gmane.lisp.guile.user Subject: Re: problem becouse scm_tc7_contin is not defined Date: 09 Sep 2002 20:43:12 +0200 Sender: guile-user-admin@gnu.org Message-ID: <878z2bypfj.fsf@zagadka.ping.de> References: <200209091118.56879.pieter.pareit@planetinternet.be> NNTP-Posting-Host: localhost.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: main.gmane.org 1031597113 18837 127.0.0.1 (9 Sep 2002 18:45:13 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Mon, 9 Sep 2002 18:45:13 +0000 (UTC) Cc: guile-user@gnu.org Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 17oTX5-0004tX-00 for ; Mon, 09 Sep 2002 20:45:11 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10) id 17oTX3-0004wb-00; Mon, 09 Sep 2002 14:45:09 -0400 Original-Received: from list by monty-python.gnu.org with tmda-scanned (Exim 4.10) id 17oTWl-0004sn-00 for guile-user@gnu.org; Mon, 09 Sep 2002 14:44:51 -0400 Original-Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10) id 17oTWj-0004s2-00 for guile-user@gnu.org; Mon, 09 Sep 2002 14:44:51 -0400 Original-Received: from dialin.speedway42.dip35.dokom.de ([195.138.42.35] helo=zagadka.ping.de) by monty-python.gnu.org with smtp (Exim 4.10) id 17oTWj-0004ry-00 for guile-user@gnu.org; Mon, 09 Sep 2002 14:44:49 -0400 Original-Received: (qmail 27414 invoked by uid 1000); 9 Sep 2002 18:43:12 -0000 Original-To: P Pareit In-Reply-To: <200209091118.56879.pieter.pareit@planetinternet.be> Original-Lines: 52 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Errors-To: guile-user-admin@gnu.org X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.0.11 Precedence: bulk List-Help: List-Post: List-Subscribe: , List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: Xref: main.gmane.org gmane.lisp.guile.user:954 X-Report-Spam: http://spam.gmane.org/gmane.lisp.guile.user:954 P Pareit writes: > By doing a grep on scm_tc7_contin in the source tree of guile I > found out that scm_tc7_contin is no longer supported and I have to > use SMOB continuation for rootcont instead. Scwm is digging into the innards of Guile, and we don't really support code like scm_internal_cwdr_no_unwind. Scm_internal_cwdr_no_unwind is essentially a copy of Guile's scm_internal_cwdr with some bits removed. There is a reason why it is called scm_*internal*_cwdr. ;-) However, scwm has probably a real need for scm_internal_cwdr_no_unwind, and we do want to support something like it officially in the future so that scwm does not need to provide its own hack. You might consider fixing scwm's hack like this SCM scm_internal_cwdr_no_unwind (scm_catch_body_t body, void *body_data, scm_catch_handler_t handler, void *handler_data, SCM_STACKITEM *stack_start) { SCM answer, old_winds; old_winds = scm_dynwinds; scm_dynwinds = SCM_EOL; answer = scm_internal_cwdr (body, body_data, handler, handler_data, stack_stack); scm_dynwinds = old_winds; return answer; } This will _only_ work when HANDLER does not do a non-local exit (via longjmp, or similar). If you want to support that (which I recommend), you need to defer running HANDLER (with the same trick that scm_internal_cwdr uses) until scm_dynwinds has been restored. The above code should be more resilient against changes to the internals of Guile, but it is still a hack. We have a proposal to fix this for real. See workbook/extension/dynamic-roots.text in CVS. You might also try to just scm_internal_cwdr instead of scm_internal_cwdr_no_unwind. That should work as well, but at a slight performance loss. Could you bring this up with the scwm developers so that we might find a solution that makes everyone happy? -- GPG: D5D4E405 - 2F9B BCCC 8527 692A 04E3 331E FAF8 226A D5D4 E405 _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://mail.gnu.org/mailman/listinfo/guile-user