diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2017-09-14 17:41:39 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2017-09-15 14:31:42 +0200 |
commit | 186e31689661e23824b123dd014a65b713bedd8c (patch) | |
tree | 2ff9a84ee809b4d9448930c7e49ca3c3dc49a907 /sal/textenc | |
parent | 73bc364347fc8325a632f17fcda220ce7d6f5945 (diff) |
Assert flags passed to rtl_convertTextToUnicode/UnicodeToText are valid
...so that at least some typos of using OUSTRING_TO_OSTRING_CVTFLAGS (0x566)
instead of OSTRING_TO_OUSTRING_CVTFLAGS (0x333) can be found. (Unfortunately,
in the other direction, 0x333 is a valid combination of
RTL_UNICODETOTEXT_FLAGS_*.)
Change-Id: I7cfb3677b103ae90de88833cc93b0a5384607e15
Reviewed-on: https://gerrit.libreoffice.org/42288
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'sal/textenc')
-rw-r--r-- | sal/textenc/textcvt.cxx | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/sal/textenc/textcvt.cxx b/sal/textenc/textcvt.cxx index b1024976eecd..03914833544b 100644 --- a/sal/textenc/textcvt.cxx +++ b/sal/textenc/textcvt.cxx @@ -19,6 +19,8 @@ #include "sal/config.h" +#include <cassert> + #include "rtl/textcvt.h" #include "gettextencodingdata.hxx" @@ -157,6 +159,24 @@ sal_Size SAL_CALL rtl_convertTextToUnicode( rtl_TextToUnicodeConverter hConverte sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtBytes ) { + assert( + (nFlags & RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MASK) + <= RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_DEFAULT); + assert( + (nFlags & RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_MASK) + <= RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT); + assert( + (nFlags & RTL_TEXTTOUNICODE_FLAGS_INVALID_MASK) + <= RTL_TEXTTOUNICODE_FLAGS_INVALID_DEFAULT); + assert( + (nFlags + & ~(RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MASK + | RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_MASK + | RTL_TEXTTOUNICODE_FLAGS_INVALID_MASK + | RTL_TEXTTOUNICODE_FLAGS_FLUSH + | RTL_TEXTTOUNICODE_FLAGS_GLOBAL_SIGNATURE)) + == 0); + const ImplTextConverter* pConverter = static_cast<const ImplTextConverter*>(hConverter); /* Only temporary, because we don't want die, if we don't have a @@ -233,6 +253,27 @@ sal_Size SAL_CALL rtl_convertUnicodeToText( rtl_UnicodeToTextConverter hConverte sal_uInt32 nFlags, sal_uInt32* pInfo, sal_Size* pSrcCvtChars ) { + assert( + (nFlags & RTL_UNICODETOTEXT_FLAGS_UNDEFINED_MASK) + <= RTL_UNICODETOTEXT_FLAGS_UNDEFINED_DEFAULT); + assert( + (nFlags & RTL_UNICODETOTEXT_FLAGS_INVALID_MASK) + <= RTL_UNICODETOTEXT_FLAGS_INVALID_DEFAULT); + assert( + (nFlags + & ~(RTL_UNICODETOTEXT_FLAGS_UNDEFINED_MASK + | RTL_UNICODETOTEXT_FLAGS_INVALID_MASK + | RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACE + | RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACESTR + | RTL_UNICODETOTEXT_FLAGS_PRIVATE_MAPTO0 + | RTL_UNICODETOTEXT_FLAGS_NONSPACING_IGNORE + | RTL_UNICODETOTEXT_FLAGS_CONTROL_IGNORE + | RTL_UNICODETOTEXT_FLAGS_PRIVATE_IGNORE + | RTL_UNICODETOTEXT_FLAGS_NOCOMPOSITE + | RTL_UNICODETOTEXT_FLAGS_FLUSH + | RTL_UNICODETOTEXT_FLAGS_GLOBAL_SIGNATURE)) + == 0); + const ImplTextConverter* pConverter = static_cast<const ImplTextConverter*>(hConverter); /* Only temporary, because we don't want die, if we don't have a |