Index: source/i18n/rbt.cpp |
diff --git a/source/i18n/rbt.cpp b/source/i18n/rbt.cpp |
index 5c4d3beaee5ece34a2951ef7d06b04009da29deb..1e4b593cce469959397a2d813c67960563180592 100644 |
--- a/source/i18n/rbt.cpp |
+++ b/source/i18n/rbt.cpp |
@@ -1,3 +1,5 @@ |
+// Copyright (C) 2016 and later: Unicode, Inc. and others. |
+// License & terms of use: http://www.unicode.org/copyright.html |
/* |
********************************************************************** |
* Copyright (C) 1999-2015, International Business Machines |
@@ -240,31 +242,27 @@ RuleBasedTransliterator::handleTransliterate(Replaceable& text, UTransPosition& |
// Double-locking must be prevented in these cases. |
// |
- // If the transliteration data is exclusively owned by this transliterator object, |
- // we don't need to do any locking. No sharing between transliterators is possible, |
- // so no concurrent access from multiple threads is possible. |
UBool lockedMutexAtThisLevel = FALSE; |
- if (isDataOwned == FALSE) { |
- // Test whether this request is operating on the same text string as |
- // some other transliteration that is still in progress and holding the |
- // transliteration mutex. If so, do not lock the transliteration |
- // mutex again. |
- // |
- // gLockedText variable is protected by the global ICU mutex. |
- // Shared RBT data protected by transliteratorDataMutex. |
- // |
- // TODO(andy): Need a better scheme for handling this. |
- UBool needToLock; |
- { |
- Mutex m; |
- needToLock = (&text != gLockedText); |
- } |
- if (needToLock) { |
- umtx_lock(&transliteratorDataMutex); // Contention, longish waits possible here. |
- Mutex m; |
- gLockedText = &text; |
- lockedMutexAtThisLevel = TRUE; |
- } |
+ |
+ // Test whether this request is operating on the same text string as |
+ // some other transliteration that is still in progress and holding the |
+ // transliteration mutex. If so, do not lock the transliteration |
+ // mutex again. |
+ // |
+ // gLockedText variable is protected by the global ICU mutex. |
+ // Shared RBT data protected by transliteratorDataMutex. |
+ // |
+ // TODO(andy): Need a better scheme for handling this. |
+ UBool needToLock; |
+ { |
+ Mutex m; |
+ needToLock = (&text != gLockedText); |
+ } |
+ if (needToLock) { |
+ umtx_lock(&transliteratorDataMutex); // Contention, longish waits possible here. |
+ Mutex m; |
+ gLockedText = &text; |
+ lockedMutexAtThisLevel = TRUE; |
} |
// Check to make sure we don't dereference a null pointer. |