summaryrefslogtreecommitdiffstats
path: root/thirdparty/icu4c/common/ubidiwrt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/icu4c/common/ubidiwrt.cpp')
-rw-r--r--thirdparty/icu4c/common/ubidiwrt.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/thirdparty/icu4c/common/ubidiwrt.cpp b/thirdparty/icu4c/common/ubidiwrt.cpp
index 969807c243..209b140722 100644
--- a/thirdparty/icu4c/common/ubidiwrt.cpp
+++ b/thirdparty/icu4c/common/ubidiwrt.cpp
@@ -501,7 +501,10 @@ ubidi_writeReordered(UBiDi *pBiDi,
destSize-=runLength;
if((pBiDi->isInverse) &&
- (/*run<runCount-1 &&*/ dirProps[logicalStart+runLength-1]!=L)) {
+ (/*run<runCount-1 &&*/
+ runLength > 0 && // doWriteForward may return 0 if src
+ // only include bidi control chars
+ dirProps[logicalStart+runLength-1]!=L)) {
markFlag |= LRM_AFTER;
}
if (markFlag & LRM_AFTER) {
@@ -632,7 +635,10 @@ ubidi_writeReordered(UBiDi *pBiDi,
}
destSize-=runLength;
- if(/*run>0 &&*/ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart+runLength-1]))) {
+ if(/*run>0 &&*/
+ runLength > 0 && // doWriteForward may return 0 if src
+ // only include bidi control chars
+ !(MASK_R_AL&DIRPROP_FLAG(dirProps[logicalStart+runLength-1]))) {
if(destSize>0) {
*dest++=RLM_CHAR;
}