diff options
author | Jesse Wilson <jessewilson@google.com> | 2010-09-21 10:26:57 -0700 |
---|---|---|
committer | Jesse Wilson <jessewilson@google.com> | 2010-09-21 10:26:57 -0700 |
commit | c59a66238261778b3fbc496e9b21dfa043ee9160 (patch) | |
tree | 71766debd0b376a860f713ff007976646cd83437 /core | |
parent | b08013c312e3d849029a2f4c11889274c00f438d (diff) | |
download | frameworks_base-c59a66238261778b3fbc496e9b21dfa043ee9160.zip frameworks_base-c59a66238261778b3fbc496e9b21dfa043ee9160.tar.gz frameworks_base-c59a66238261778b3fbc496e9b21dfa043ee9160.tar.bz2 |
Fix double-checked locking bug in LocalSocket.
This code uses a try/finally to maintain the old behavior of setting
implCreated even if creation fails.
Change-Id: Ieac05568477db4908cd4087714cf00a9addd1d20
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/net/LocalSocket.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/core/java/android/net/LocalSocket.java b/core/java/android/net/LocalSocket.java index 4039a69..3ee8a80 100644 --- a/core/java/android/net/LocalSocket.java +++ b/core/java/android/net/LocalSocket.java @@ -70,8 +70,11 @@ public class LocalSocket { if (!implCreated) { synchronized (this) { if (!implCreated) { - implCreated = true; - impl.create(true); + try { + impl.create(true); + } finally { + implCreated = true; + } } } } |