aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2019-04-11 15:52:08 +1000
committerNeil <nyamatongwe@gmail.com>2019-04-11 15:52:08 +1000
commit66086920fd7a1d983190f83ba1e06dfc15a815e3 (patch)
tree93e06caa83f9c59a16cd8aa2f9b9fb31d0a9b33c
parent477279555e18bc9f9ac18be0348dc914d1c5c0df (diff)
downloadscintilla-mirror-66086920fd7a1d983190f83ba1e06dfc15a815e3.tar.gz
Backport: Bug [#2094]. Avoid exceptions by treating text as one-byte per character in
accessibility if UTF32 index not available. Backport of changeset 7421:2c8b52af4ae5.
-rw-r--r--gtk/ScintillaGTKAccessible.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/gtk/ScintillaGTKAccessible.h b/gtk/ScintillaGTKAccessible.h
index b9d94b0e2..264bbae1c 100644
--- a/gtk/ScintillaGTKAccessible.h
+++ b/gtk/ScintillaGTKAccessible.h
@@ -32,6 +32,9 @@ private:
}
Sci::Position ByteOffsetFromCharacterOffset(Sci::Position startByte, int characterOffset) {
+ if (!(sci->pdoc->LineCharacterIndex() & SC_LINECHARACTERINDEX_UTF32)) {
+ return startByte + characterOffset;
+ }
if (characterOffset > 0) {
// Try and reduce the range by reverse-looking into the character offset cache
Sci::Line lineStart = sci->pdoc->LineFromPosition(startByte);
@@ -59,6 +62,9 @@ private:
}
Sci::Position CharacterOffsetFromByteOffset(Sci::Position byteOffset) {
+ if (!(sci->pdoc->LineCharacterIndex() & SC_LINECHARACTERINDEX_UTF32)) {
+ return byteOffset;
+ }
const Sci::Line line = sci->pdoc->LineFromPosition(byteOffset);
const Sci::Position lineStart = sci->pdoc->LineStart(line);
return sci->pdoc->IndexLineStart(line, SC_LINECHARACTERINDEX_UTF32) + sci->pdoc->CountCharacters(lineStart, byteOffset);