aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil Hodgson <nyamatongwe@gmail.com>2018-05-15 19:20:22 +1000
committerNeil Hodgson <nyamatongwe@gmail.com>2018-05-15 19:20:22 +1000
commit8e7274be250aa1b92f9d7b11fa3ae27dec7e2a2f (patch)
treea820a360b82f2bd58f23b625c503475e81d4d675
parent3c9aa3183daaa3eb20838a69ed97195eab35272c (diff)
downloadscintilla-mirror-8e7274be250aa1b92f9d7b11fa3ae27dec7e2a2f.tar.gz
Backport: Fix crashes for invalid DBCS characters when dragging text, changing case of
text, case-insensitive searching, and retrieving text as UTF-8. Backport of changeset 6952:7bfe9ec5222a.
-rw-r--r--cocoa/ScintillaCocoa.mm10
-rw-r--r--doc/ScintillaHistory.html4
2 files changed, 14 insertions, 0 deletions
diff --git a/cocoa/ScintillaCocoa.mm b/cocoa/ScintillaCocoa.mm
index 74113a364..2bd252e70 100644
--- a/cocoa/ScintillaCocoa.mm
+++ b/cocoa/ScintillaCocoa.mm
@@ -656,6 +656,9 @@ std::string ScintillaCocoa::CaseMapString(const std::string &s, int caseMapping)
vs.styles[STYLE_DEFAULT].characterSet);
CFStringRef cfsVal = CFStringFromString(s.c_str(), s.length(), encoding);
+ if (!cfsVal) {
+ return s;
+ }
NSString *sMapped;
switch (caseMapping)
@@ -1301,6 +1304,8 @@ void ScintillaCocoa::DragScroll()
selectedText.characterSet);
CFStringRef cfsVal = CFStringFromString(selectedText.Data(), selectedText.Length(), encoding);
+ if (!cfsVal)
+ return;
if ([type compare: NSPasteboardTypeString] == NSOrderedSame)
{
@@ -1584,6 +1589,8 @@ void ScintillaCocoa::SetPasteboardData(NSPasteboard* board, const SelectionText
selectedText.characterSet);
CFStringRef cfsVal = CFStringFromString(selectedText.Data(), selectedText.Length(), encoding);
+ if (!cfsVal)
+ return;
NSArray *pbTypes = selectedText.rectangular ?
[NSArray arrayWithObjects: NSStringPboardType, ScintillaRecPboardType, nil] :
@@ -1663,6 +1670,9 @@ Sci::Position ScintillaCocoa::TargetAsUTF8(char *text) const
vs.styles[STYLE_DEFAULT].characterSet);
const std::string s = RangeText(targetStart, targetEnd);
CFStringRef cfsVal = CFStringFromString(s.c_str(), s.length(), encoding);
+ if (!cfsVal) {
+ return 0;
+ }
const std::string tmputf = EncodedBytesString(cfsVal, kCFStringEncodingUTF8);
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html
index 300e81fee..fdb31fc25 100644
--- a/doc/ScintillaHistory.html
+++ b/doc/ScintillaHistory.html
@@ -575,6 +575,10 @@
"in selection" replace and the selection started after the line start.
</li>
<li>
+ Crashes fixed on macOS for invalid DBCS characters when dragging text,
+ changing case of text, case-insensitive searching, and retrieving text as UTF-8.
+ </li>
+ <li>
On Win32, a new file, ScintillaDLL.cxx, provides
the DllMain function required for a stand-alone Scintilla DLL. Build and project files should include this
file when producing a DLL and omit it when producing a static library or linking Scintilla statically.