Merge "Synchronize calls to Matcher.closeImpl."
diff --git a/luni/src/main/java/java/util/regex/Matcher.java b/luni/src/main/java/java/util/regex/Matcher.java
index cfd4432..ce2dfe7 100644
--- a/luni/src/main/java/java/util/regex/Matcher.java
+++ b/luni/src/main/java/java/util/regex/Matcher.java
@@ -229,11 +229,13 @@
this.pattern = pattern;
- if (address != 0) {
- closeImpl(address);
- address = 0;
+ synchronized (this) {
+ if (address != 0) {
+ closeImpl(address);
+ address = 0; // In case openImpl throws.
+ }
+ address = openImpl(pattern.address);
}
- address = openImpl(pattern.address);
if (input != null) {
resetForInput();
@@ -634,7 +636,9 @@
@Override protected void finalize() throws Throwable {
try {
- closeImpl(address);
+ synchronized (this) {
+ closeImpl(address);
+ }
} finally {
super.finalize();
}