aboutsummaryrefslogtreecommitdiff
path: root/src/scintilla_backports/6222_45f968a6735a.patch
diff options
context:
space:
mode:
Diffstat (limited to 'src/scintilla_backports/6222_45f968a6735a.patch')
-rw-r--r--src/scintilla_backports/6222_45f968a6735a.patch222
1 files changed, 222 insertions, 0 deletions
diff --git a/src/scintilla_backports/6222_45f968a6735a.patch b/src/scintilla_backports/6222_45f968a6735a.patch
new file mode 100644
index 00000000..918b9579
--- /dev/null
+++ b/src/scintilla_backports/6222_45f968a6735a.patch
@@ -0,0 +1,222 @@
+# HG changeset patch
+# User Neil <nyamatongwe@gmail.com>
+# Date 1493717258 -36000
+# Node ID 45f968a6735a89a219c8461ea3312655cc15da83
+# Parent da6b7ddd88fe823d0e4b985ace8903ccf304d573
+More consistent use of size_t when converting Unicode formats.
+
+diff -r da6b7ddd88fe -r 45f968a6735a src/Document.cxx
+--- a/src/Document.cxx Tue May 02 11:16:00 2017 +1000
++++ b/src/Document.cxx Tue May 02 19:27:38 2017 +1000
+@@ -2883,7 +2883,7 @@
+
+ bool matched = false;
+ if (SC_CP_UTF8 == doc->dbcsCodePage) {
+- unsigned int lenS = static_cast<unsigned int>(strlen(s));
++ size_t lenS = strlen(s);
+ std::vector<wchar_t> ws(lenS + 1);
+ #if WCHAR_T_IS_16
+ size_t outLen = UTF16FromUTF8(s, lenS, &ws[0], lenS);
+diff -r da6b7ddd88fe -r 45f968a6735a src/UniConversion.cxx
+--- a/src/UniConversion.cxx Tue May 02 11:16:00 2017 +1000
++++ b/src/UniConversion.cxx Tue May 02 19:27:38 2017 +1000
+@@ -20,9 +20,9 @@
+ namespace Scintilla {
+ #endif
+
+-unsigned int UTF8Length(const wchar_t *uptr, unsigned int tlen) {
+- unsigned int len = 0;
+- for (unsigned int i = 0; i < tlen && uptr[i];) {
++size_t UTF8Length(const wchar_t *uptr, size_t tlen) {
++ size_t len = 0;
++ for (size_t i = 0; i < tlen && uptr[i];) {
+ const unsigned int uch = uptr[i];
+ if (uch < 0x80) {
+ len++;
+@@ -40,9 +40,9 @@
+ return len;
+ }
+
+-void UTF8FromUTF16(const wchar_t *uptr, unsigned int tlen, char *putf, unsigned int len) {
+- unsigned int k = 0;
+- for (unsigned int i = 0; i < tlen && uptr[i];) {
++void UTF8FromUTF16(const wchar_t *uptr, size_t tlen, char *putf, size_t len) {
++ size_t k = 0;
++ for (size_t i = 0; i < tlen && uptr[i];) {
+ const unsigned int uch = uptr[i];
+ if (uch < 0x80) {
+ putf[k++] = static_cast<char>(uch);
+@@ -138,10 +138,10 @@
+ return ui;
+ }
+
+-unsigned int UTF32FromUTF8(const char *s, unsigned int len, unsigned int *tbuf, unsigned int tlen) {
+- unsigned int ui=0;
++size_t UTF32FromUTF8(const char *s, size_t len, unsigned int *tbuf, size_t tlen) {
++ size_t ui=0;
+ const unsigned char *us = reinterpret_cast<const unsigned char *>(s);
+- unsigned int i=0;
++ size_t i=0;
+ while ((i<len) && (ui<tlen)) {
+ unsigned char ch = us[i++];
+ unsigned int value = 0;
+diff -r da6b7ddd88fe -r 45f968a6735a src/UniConversion.h
+--- a/src/UniConversion.h Tue May 02 11:16:00 2017 +1000
++++ b/src/UniConversion.h Tue May 02 19:27:38 2017 +1000
+@@ -16,12 +16,12 @@
+
+ const int unicodeReplacementChar = 0xFFFD;
+
+-unsigned int UTF8Length(const wchar_t *uptr, unsigned int tlen);
+-void UTF8FromUTF16(const wchar_t *uptr, unsigned int tlen, char *putf, unsigned int len);
++size_t UTF8Length(const wchar_t *uptr, size_t tlen);
++void UTF8FromUTF16(const wchar_t *uptr, size_t tlen, char *putf, size_t len);
+ unsigned int UTF8CharLength(unsigned char ch);
+ size_t UTF16Length(const char *s, size_t len);
+ size_t UTF16FromUTF8(const char *s, size_t len, wchar_t *tbuf, size_t tlen);
+-unsigned int UTF32FromUTF8(const char *s, unsigned int len, unsigned int *tbuf, unsigned int tlen);
++size_t UTF32FromUTF8(const char *s, size_t len, unsigned int *tbuf, size_t tlen);
+ unsigned int UTF16FromUTF32Character(unsigned int val, wchar_t *tbuf);
+ std::string FixInvalidUTF8(const std::string &text);
+
+diff -r da6b7ddd88fe -r 45f968a6735a win32/PlatWin.cxx
+--- a/win32/PlatWin.cxx Tue May 02 11:16:00 2017 +1000
++++ b/win32/PlatWin.cxx Tue May 02 19:27:38 2017 +1000
+@@ -481,7 +481,7 @@
+ const int stackBufferLength = 1000;
+ class TextWide : public VarBuffer<wchar_t, stackBufferLength> {
+ public:
+- int tlen;
++ int tlen; // Using int instead of size_t as most Win32 APIs take int.
+ TextWide(const char *s, int len, bool unicodeMode, int codePage=0) :
+ VarBuffer<wchar_t, stackBufferLength>(len) {
+ if (unicodeMode) {
+diff -r da6b7ddd88fe -r 45f968a6735a win32/ScintillaWin.cxx
+--- a/win32/ScintillaWin.cxx Tue May 02 11:16:00 2017 +1000
++++ b/win32/ScintillaWin.cxx Tue May 02 19:27:38 2017 +1000
+@@ -782,10 +782,10 @@
+ void ScintillaWin::AddCharUTF16(wchar_t const *wcs, unsigned int wclen) {
+ if (IsUnicodeMode()) {
+ char utfval[maxLenInputIME * 3];
+- unsigned int len = UTF8Length(wcs, wclen);
++ size_t len = UTF8Length(wcs, wclen);
+ UTF8FromUTF16(wcs, wclen, utfval, len);
+ utfval[len] = '\0';
+- AddCharUTF(utfval, len);
++ AddCharUTF(utfval, static_cast<unsigned int>(len));
+ } else {
+ UINT cpDest = CodePageOfDocument();
+ char inBufferCP[maxLenInputIME * 2];
+@@ -1178,7 +1178,7 @@
+ std::vector<char> docBytes(pdoc->Length(), '\0');
+ pdoc->GetCharRange(&docBytes[0], 0, pdoc->Length());
+ if (IsUnicodeMode()) {
+- return UTF16Length(&docBytes[0], static_cast<unsigned int>(docBytes.size()));
++ return UTF16Length(&docBytes[0], docBytes.size());
+ } else {
+ return ::MultiByteToWideChar(CodePageOfDocument(), 0, &docBytes[0],
+ static_cast<int>(docBytes.size()), NULL, 0);
+@@ -1200,7 +1200,7 @@
+ if (wParam == 0)
+ return 0;
+ size_t uLen = UTF16FromUTF8(&docBytes[0], docBytes.size(),
+- ptr, static_cast<int>(wParam) - 1);
++ ptr, wParam - 1);
+ ptr[uLen] = L'\0';
+ return uLen;
+ } else {
+@@ -2231,11 +2231,11 @@
+ if (memUSelection) {
+ wchar_t *uptr = static_cast<wchar_t *>(memUSelection.ptr);
+ if (uptr) {
+- unsigned int len;
++ size_t len;
+ std::vector<char> putf;
+ // Default Scintilla behaviour in Unicode mode
+ if (IsUnicodeMode()) {
+- const unsigned int bytes = static_cast<unsigned int>(memUSelection.Size());
++ const size_t bytes = memUSelection.Size();
+ len = UTF8Length(uptr, bytes / 2);
+ putf.resize(len + 1);
+ UTF8FromUTF16(uptr, bytes / 2, &putf[0], len);
+@@ -2247,10 +2247,10 @@
+ NULL, 0, NULL, NULL) - 1; // subtract 0 terminator
+ putf.resize(len + 1);
+ ::WideCharToMultiByte(cpDest, 0, uptr, -1,
+- &putf[0], len + 1, NULL, NULL);
++ &putf[0], static_cast<int>(len) + 1, NULL, NULL);
+ }
+
+- InsertPasteShape(&putf[0], len, pasteShape);
++ InsertPasteShape(&putf[0], static_cast<int>(len), pasteShape);
+ }
+ memUSelection.Unlock();
+ } else {
+@@ -2259,27 +2259,28 @@
+ if (memSelection) {
+ char *ptr = static_cast<char *>(memSelection.ptr);
+ if (ptr) {
+- const unsigned int bytes = static_cast<unsigned int>(memSelection.Size());
+- unsigned int len = bytes;
+- for (unsigned int i = 0; i < bytes; i++) {
++ const size_t bytes = memSelection.Size();
++ size_t len = bytes;
++ for (size_t i = 0; i < bytes; i++) {
+ if ((len == bytes) && (0 == ptr[i]))
+ len = i;
+ }
++ const int ilen = static_cast<int>(len);
+
+ // In Unicode mode, convert clipboard text to UTF-8
+ if (IsUnicodeMode()) {
+ std::vector<wchar_t> uptr(len+1);
+
+- const unsigned int ulen = ::MultiByteToWideChar(CP_ACP, 0,
+- ptr, len, &uptr[0], len+1);
+-
+- unsigned int mlen = UTF8Length(&uptr[0], ulen);
++ const size_t ulen = ::MultiByteToWideChar(CP_ACP, 0,
++ ptr, ilen, &uptr[0], ilen +1);
++
++ const size_t mlen = UTF8Length(&uptr[0], ulen);
+ std::vector<char> putf(mlen+1);
+ UTF8FromUTF16(&uptr[0], ulen, &putf[0], mlen);
+
+- InsertPasteShape(&putf[0], mlen, pasteShape);
++ InsertPasteShape(&putf[0], static_cast<int>(mlen), pasteShape);
+ } else {
+- InsertPasteShape(ptr, len, pasteShape);
++ InsertPasteShape(ptr, ilen, pasteShape);
+ }
+ }
+ memSelection.Unlock();
+@@ -2770,7 +2771,7 @@
+ // Default Scintilla behaviour in Unicode mode
+ if (IsUnicodeMode()) {
+ size_t uchars = UTF16Length(selectedText.Data(),
+- static_cast<int>(selectedText.LengthWithTerminator()));
++ selectedText.LengthWithTerminator());
+ uniText.Allocate(2 * uchars);
+ if (uniText) {
+ UTF16FromUTF8(selectedText.Data(), selectedText.LengthWithTerminator(),
+@@ -3069,9 +3070,9 @@
+ wchar_t *udata = static_cast<wchar_t *>(memUDrop.ptr);
+ if (udata) {
+ if (IsUnicodeMode()) {
+- const int tlen = static_cast<int>(memUDrop.Size());
++ const size_t tlen = memUDrop.Size();
+ // Convert UTF-16 to UTF-8
+- int dataLen = UTF8Length(udata, tlen/2);
++ const size_t dataLen = UTF8Length(udata, tlen/2);
+ data.resize(dataLen+1);
+ UTF8FromUTF16(udata, tlen/2, &data[0], dataLen);
+ } else {
+@@ -3146,7 +3147,7 @@
+
+ GlobalMemory text;
+ if (pFEIn->cfFormat == CF_UNICODETEXT) {
+- size_t uchars = UTF16Length(drag.Data(), static_cast<int>(drag.LengthWithTerminator()));
++ size_t uchars = UTF16Length(drag.Data(), drag.LengthWithTerminator());
+ text.Allocate(2 * uchars);
+ if (text) {
+ UTF16FromUTF8(drag.Data(), drag.LengthWithTerminator(),