summaryrefslogtreecommitdiff
path: root/sal/textenc/converteuctw.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sal/textenc/converteuctw.cxx')
-rw-r--r--sal/textenc/converteuctw.cxx14
1 files changed, 9 insertions, 5 deletions
diff --git a/sal/textenc/converteuctw.cxx b/sal/textenc/converteuctw.cxx
index abc214402636..edb3c07fa934 100644
--- a/sal/textenc/converteuctw.cxx
+++ b/sal/textenc/converteuctw.cxx
@@ -19,6 +19,9 @@
#include <sal/config.h>
+#include <cassert>
+
+#include <rtl/character.hxx>
#include <rtl/textcvt.h>
#include <sal/types.h>
@@ -342,6 +345,11 @@ sal_Size ImplConvertUnicodeToEucTw(void const * pData,
nHighSurrogate = static_cast<sal_Unicode>(nChar);
continue;
}
+ else if (ImplIsLowSurrogate(nChar))
+ {
+ bUndefined = false;
+ goto bad_input;
+ }
}
else if (ImplIsLowSurrogate(nChar))
nChar = ImplCombineSurrogates(nHighSurrogate, nChar);
@@ -351,11 +359,7 @@ sal_Size ImplConvertUnicodeToEucTw(void const * pData,
goto bad_input;
}
- if (ImplIsLowSurrogate(nChar) || ImplIsNoncharacter(nChar))
- {
- bUndefined = false;
- goto bad_input;
- }
+ assert(rtl::isUnicodeScalarValue(nChar));
if (nChar < 0x80)
if (pDestBufPtr != pDestBufEnd)