add valueNowOrOnUnwind: around stream operations
authorps
Tue, 12 Sep 2000 13:27:58 +0200
changeset 5602 372afeb07ce8
parent 5601 c101570d9daa
child 5603 00d09b3135e1
add valueNowOrOnUnwind: around stream operations
Filename.st
--- a/Filename.st	Tue Sep 12 12:17:43 2000 +0200
+++ b/Filename.st	Tue Sep 12 13:27:58 2000 +0200
@@ -2720,8 +2720,8 @@
     s := DirectoryStream directoryNamed:(self osNameForDirectoryContents).
     s isNil ifTrue:[^nil].
 
-    contents := s contents.
-    s close.
+    [ contents := s contents.
+    ] valueNowOrOnUnwindDo:[s close].
 
     contents remove:'.' ifAbsent:nil.
     contents remove:'..' ifAbsent:nil.
@@ -2797,11 +2797,14 @@
     s := DirectoryStream directoryNamed:(self osNameForDirectoryContents).
     s isNil ifTrue:[^ nil].
 
-    [s atEnd] whileFalse:[
-        fn := s nextLine.
-        aBlock value:fn
+    [
+        [s atEnd] whileFalse:[
+            fn := s nextLine.
+            aBlock value:fn
+        ]
+    ] valueNowOrOnUnwindDo:[
+        s close
     ].
-    s close.
 
     "
      '.' asFilename directoryContentsDo:[:fn | Transcript showCR:fn].
@@ -3740,6 +3743,6 @@
 !Filename class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.189 2000-09-11 19:59:54 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Filename.st,v 1.190 2000-09-12 11:27:58 ps Exp $'
 ! !
 Filename initialize!