aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa
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 /cocoa
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.
Diffstat (limited to 'cocoa')
-rw-r--r--cocoa/ScintillaCocoa.mm10
1 files changed, 10 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);