]> gitweb.factorcode.org Git - factor.git/commitdiff
alien.destructors: ignore any output values from disposal word
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 29 Mar 2009 03:26:49 +0000 (22:26 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Sun, 29 Mar 2009 03:26:49 +0000 (22:26 -0500)
basis/alien/destructors/destructors.factor
basis/combinators/smart/smart.factor

index 1b6022d3b7b21bea1dadde136f2013a4761770e0..1c5c975fe65f37c1de0052af67684a4cdd04338f 100644 (file)
@@ -1,6 +1,7 @@
 ! Copyright (C) 2009 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: functors destructors accessors kernel parser words ;
+USING: functors destructors accessors kernel parser words
+combinators.smart ;
 IN: alien.destructors
 
 SLOT: alien
@@ -18,7 +19,7 @@ TUPLE: F-destructor alien disposed ;
 
 : <F-destructor> ( alien -- destructor ) f F-destructor boa ; inline
 
-M: F-destructor dispose* alien>> F ;
+M: F-destructor dispose* [ alien>> F ] drop-outputs ;
 
 : &F ( alien -- alien ) dup <F-destructor> &dispose drop ; inline
 
index e7bdd75ced39028508cd709d1c41d53ae75772c3..aa7960539cca6f6d66c022b8262911481c0f06d1 100644 (file)
@@ -4,6 +4,9 @@ USING: accessors fry generalizations kernel macros math.order
 stack-checker math ;
 IN: combinators.smart
 
+MACRO: drop-outputs ( quot -- quot' )
+    dup infer out>> '[ @ _ ndrop ] ;
+
 MACRO: output>sequence ( quot exemplar -- newquot )
     [ dup infer out>> ] dip
     '[ @ _ _ nsequence ] ;