70 lines
2.4 KiB
Diff
70 lines
2.4 KiB
Diff
|
new file mode 100644
|
||
|
--- /dev/null
|
||
|
+++ b/extensions/spellcheck/hunspell/patches/bug1838113.patch
|
||
|
@@ -0,0 +1,20 @@
|
||
|
+diff --git a/extensions/spellcheck/hunspell/src/csutil.cxx b/extensions/spellcheck/hunspell/src/csutil.cxx
|
||
|
+index 48e58ff4b2677..39a54d38023c8 100644
|
||
|
+--- a/extensions/spellcheck/hunspell/src/csutil.cxx
|
||
|
++++ b/extensions/spellcheck/hunspell/src/csutil.cxx
|
||
|
+@@ -108,6 +108,7 @@ static struct unicode_info2* utf_tbl = NULL;
|
||
|
+ static int utf_tbl_count =
|
||
|
+ 0; // utf_tbl can be used by multiple Hunspell instances
|
||
|
+
|
||
|
++#ifndef MOZILLA_CLIENT
|
||
|
+ void myopen(std::ifstream& stream, const char* path, std::ios_base::openmode mode)
|
||
|
+ {
|
||
|
+ #if defined(_WIN32) && defined(_MSC_VER)
|
||
|
+@@ -127,6 +128,7 @@ void myopen(std::ifstream& stream, const char* path, std::ios_base::openmode mod
|
||
|
+ #endif
|
||
|
+ stream.open(path, mode);
|
||
|
+ }
|
||
|
++#endif
|
||
|
+
|
||
|
+ std::string& u16_u8(std::string& dest, const std::vector<w_char>& src) {
|
||
|
+ dest.clear();
|
||
|
--- a/extensions/spellcheck/hunspell/src/csutil.cxx
|
||
|
+++ b/extensions/spellcheck/hunspell/src/csutil.cxx
|
||
|
@@ -103,16 +103,17 @@ struct unicode_info2 {
|
||
|
unsigned short cupper;
|
||
|
unsigned short clower;
|
||
|
};
|
||
|
|
||
|
static struct unicode_info2* utf_tbl = NULL;
|
||
|
static int utf_tbl_count =
|
||
|
0; // utf_tbl can be used by multiple Hunspell instances
|
||
|
|
||
|
+#ifndef MOZILLA_CLIENT
|
||
|
void myopen(std::ifstream& stream, const char* path, std::ios_base::openmode mode)
|
||
|
{
|
||
|
#if defined(_WIN32) && defined(_MSC_VER)
|
||
|
#define WIN32_LONG_PATH_PREFIX "\\\\?\\"
|
||
|
if (strncmp(path, WIN32_LONG_PATH_PREFIX, 4) == 0) {
|
||
|
int len = MultiByteToWideChar(CP_UTF8, 0, path, -1, NULL, 0);
|
||
|
wchar_t* buff = new wchar_t[len];
|
||
|
wchar_t* buff2 = new wchar_t[len];
|
||
|
@@ -122,16 +123,17 @@ void myopen(std::ifstream& stream, const
|
||
|
}
|
||
|
delete [] buff;
|
||
|
delete [] buff2;
|
||
|
}
|
||
|
else
|
||
|
#endif
|
||
|
stream.open(path, mode);
|
||
|
}
|
||
|
+#endif
|
||
|
|
||
|
std::string& u16_u8(std::string& dest, const std::vector<w_char>& src) {
|
||
|
dest.clear();
|
||
|
std::vector<w_char>::const_iterator u2 = src.begin();
|
||
|
std::vector<w_char>::const_iterator u2_max = src.end();
|
||
|
while (u2 < u2_max) {
|
||
|
signed char u8;
|
||
|
if (u2->h) { // > 0xFF
|
||
|
--- a/extensions/spellcheck/hunspell/update.sh
|
||
|
+++ b/extensions/spellcheck/hunspell/update.sh
|
||
|
@@ -29,3 +29,4 @@ rm -rf ${tmpclonedir}
|
||
|
cd ${hunspell_dir}/src
|
||
|
patch -p5 < ../patches/bug1410214.patch
|
||
|
patch -p5 < ../patches/bug1739761.patch
|
||
|
+patch -p5 < ../patches/bug1838113.patch
|