summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJesse Wilson <jessewilson@google.com>2010-09-21 10:26:57 -0700
committerJesse Wilson <jessewilson@google.com>2010-09-21 10:26:57 -0700
commitc59a66238261778b3fbc496e9b21dfa043ee9160 (patch)
tree71766debd0b376a860f713ff007976646cd83437 /core
parentb08013c312e3d849029a2f4c11889274c00f438d (diff)
downloadframeworks_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.java7
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;
+ }
}
}
}