PatchSet 4831 
Date: 2004/06/08 21:11:06
Author: kaz
Branch: HEAD
Tag: (none) 
Log:
2004-06-09  Ito Kazumitsu  <[EMAIL PROTECTED]>

        * libraries/javalib/kaffe/lang/UNIXProcess.java:
        Close the internal stream sync when the subprocess is finished.
        Close input/output streams in the method finalize().

Members: 
        ChangeLog:1.2399->1.2400 
        libraries/javalib/kaffe/lang/UNIXProcess.java:1.18->1.19 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2399 kaffe/ChangeLog:1.2400
--- kaffe/ChangeLog:1.2399      Mon Jun  7 19:14:07 2004
+++ kaffe/ChangeLog     Tue Jun  8 21:11:06 2004
@@ -1,3 +1,9 @@
+2004-06-09  Ito Kazumitsu  <[EMAIL PROTECTED]>
+
+       * libraries/javalib/kaffe/lang/UNIXProcess.java:
+       Close the internal stream sync when the subprocess is finished.
+       Close input/output streams in the method finalize().
+
 2004-06-07  Guilhem Lavaux <[EMAIL PROTECTED]>
 
        * configure.ac: Check for setrlimit. Fixed typo.
Index: kaffe/libraries/javalib/kaffe/lang/UNIXProcess.java
diff -u kaffe/libraries/javalib/kaffe/lang/UNIXProcess.java:1.18 
kaffe/libraries/javalib/kaffe/lang/UNIXProcess.java:1.19
--- kaffe/libraries/javalib/kaffe/lang/UNIXProcess.java:1.18    Mon Apr 12 11:40:33 
2004
+++ kaffe/libraries/javalib/kaffe/lang/UNIXProcess.java Tue Jun  8 21:11:08 2004
@@ -34,6 +34,7 @@
        OutputStream stdin_stream;
        InputStream raw_stdout;
        InputStream raw_stderr;
+       FileOutputStream sync;
        Throwable throwable;            // saved to rethrow in correct thread
 
 public UNIXProcess(final String argv[], final String arge[], File dir)
@@ -75,6 +76,7 @@
                                this.notifyAll();
                        }
                        synchronized(UNIXProcess.this) {
+                               try_close(sync);
                                UNIXProcess.this.notifyAll();
                        }
                }
@@ -116,7 +118,7 @@
                raw_stderr = new FileInputStream(stderr_fd);
 
                // now signal child to proceed
-               FileOutputStream sync = new FileOutputStream(sync_fd);
+               sync = new FileOutputStream(sync_fd);
                byte[] sbuf = new byte[1];
                try {
                        sync.write(sbuf);
@@ -164,6 +166,7 @@
                raw_stdout.close();
                raw_stderr.close();
                stdin_stream.close();
+               sync.close();
        }
        catch (IOException e) {
                e.printStackTrace();
@@ -184,6 +187,31 @@
 private native int execWait();
 private native static void sendSignal0(int pid, int signum);
 private native static int getKillSignal();
+
+protected void finalize() throws Throwable {
+       super.finalize();
+       try_close(raw_stdout);
+       try_close(raw_stderr);
+       try_close(stdin_stream);
+}
+
+private static void try_close(InputStream stream) {
+       if (stream != null) {
+               try {
+                       stream.close();
+               }
+               catch (IOException e) {}
+       }
+}
+
+private static void try_close(OutputStream stream) {
+       if (stream != null) {
+               try {
+                       stream.close();
+               }
+               catch (IOException e) {}
+       }
+}
 
 }
 

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to