diff options
Diffstat (limited to 'core/java/android/net/LocalSocketImpl.java')
-rw-r--r-- | core/java/android/net/LocalSocketImpl.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/core/java/android/net/LocalSocketImpl.java b/core/java/android/net/LocalSocketImpl.java index fa3cf58..b2ee50a 100644 --- a/core/java/android/net/LocalSocketImpl.java +++ b/core/java/android/net/LocalSocketImpl.java @@ -39,6 +39,8 @@ class LocalSocketImpl /** null if closed or not yet created */ private FileDescriptor fd; + /** whether fd is created internally */ + private boolean mFdCreatedInternally; // These fields are accessed by native code; /** file descriptor array received during a previous read */ @@ -247,6 +249,7 @@ class LocalSocketImpl } try { fd = Libcore.os.socket(OsConstants.AF_UNIX, osType, 0); + mFdCreatedInternally = true; } catch (ErrnoException e) { e.rethrowAsIOException(); } @@ -260,7 +263,10 @@ class LocalSocketImpl */ public void close() throws IOException { synchronized (LocalSocketImpl.this) { - if (fd == null) return; + if ((fd == null) || (mFdCreatedInternally == false)) { + fd = null; + return; + } try { Libcore.os.close(fd); } catch (ErrnoException e) { |