diff --git a/autobuild.xml b/autobuild.xml
index 80c6e4e88b..52c4428259 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -823,47 +823,19 @@
- jpeglib
+ libjpeg-turbo
platforms
- darwin64
+ windows64
archive
hash
- 776d114aa1e3455bb13deaacd756deb07b53ecbe
+ 36144272e381952a7c11f1d593c2916c5c7387d0
hash_algorithm
sha1
url
- https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-darwin64-7846234.tar.zst
+ https://github.com/secondlife/3p-libjpeg-turbo/releases/download/v3.0.3-r1/libjpeg_turbo-3.0.3-windows64-10204037839.tar.zst
name
- darwin64
+ windows64
linux64
archive
hash
- b4b2278bd2fcae85619e2145a243cca388d760d7
+ f853a7d4fe842e7a661dd71a56a51f65b2ec25c7
hash_algorithm
sha1
url
- https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-linux64-7846234.tar.zst
+ https://github.com/secondlife/3p-libjpeg-turbo/releases/download/v3.0.3-r1/libjpeg_turbo-3.0.3-linux64-10204037839.tar.zst
name
linux64
- windows64
+ darwin64
archive
hash
- d50fcac69eeb9404638da07db96ee3e1191ecf93
+ 6fcbc2c3c91b5e9bfbbc57ddf27d2f3698fe7d99
hash_algorithm
sha1
url
- https://github.com/secondlife/3p-jpeglib/releases/download/v8c.7846234/jpeglib-8c.7846234-windows64-7846234.tar.zst
+ https://github.com/secondlife/3p-libjpeg-turbo/releases/download/v3.0.3-r1/libjpeg_turbo-3.0.3-darwin64-10204037839.tar.zst
name
- windows64
+ darwin64
license
- jpeglib
+ libjpeg-turbo
license_file
- LICENSES/jpeglib.txt
+ LICENSES/libjpeg-turbo.txt
copyright
- Copyright (C) 1991-2011, Thomas G. Lane, Guido Vollbeding.
+ Copyright (C)2009-2024 D. R. Commander. All Rights Reserved. Copyright (C)2015 Viktor Szathmáry. All Rights Reserved.
version
- 8c.7846234
+ 3.0.3
name
- jpeglib
+ libjpeg-turbo
+ canonical_repo
+ https://github.com/secondlife/3p-libjpeg-turbo
description
JPEG encoding, decoding library
@@ -1410,11 +1384,11 @@
archive
hash
- d5757ab84d934fa358f299ab91e2e297beaa3dac
+ e71ae7a645603fe967a69aa5beb5b3009185e177
hash_algorithm
sha1
url
- https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-darwin64-650fb94.tar.zst
+ https://github.com/secondlife/3p-libhunspell/releases/download/v1.7.2-r1/libhunspell-1.7.2.10207243663-darwin64-10207243663.tar.zst
name
darwin64
@@ -1424,11 +1398,11 @@
archive
hash
- 6413d3bd4cd50c2a6b7f949eb4bd6f0c94feb984
+ 275ffb7f60064d8008aed8406f80f34229f651fc
hash_algorithm
sha1
url
- https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-linux64-650fb94.tar.zst
+ https://github.com/secondlife/3p-libhunspell/releases/download/v1.7.2-r1/libhunspell-1.7.2.10207243663-linux64-10207243663.tar.zst
name
linux64
@@ -1438,11 +1412,11 @@
archive
hash
- c1be4a79b20435030b2e0e01b582c61b462c8376
+ 89ff24e93eaeca7949ccdb5cc368f938f5b1f307
hash_algorithm
sha1
url
- https://github.com/secondlife/3p-libhunspell/releases/download/v1.3.2.650fb94/libhunspell-1.3.2.650fb94-windows64-650fb94.tar.zst
+ https://github.com/secondlife/3p-libhunspell/releases/download/v1.7.2-r1/libhunspell-1.7.2.10207243663-windows64-10207243663.tar.zst
name
windows64
@@ -1453,9 +1427,9 @@
license_file
LICENSES/hunspell.txt
copyright
- See hunspell.txt
+ LGPL 2.1
version
- 1.3.2.650fb94
+ 1.7.2.10207243663
name
libhunspell
description
@@ -2523,66 +2497,6 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
description
Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) Library
- pcre
-
- platforms
-
- darwin64
-
- archive
-
- hash
- b372d37596474043a62568e569b0ce155192f484
- hash_algorithm
- sha1
- url
- https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-darwin64-979fd86.tar.zst
-
- name
- darwin64
-
- linux64
-
- archive
-
- hash
- 3a722c508a9278a49317e3f749f3256768f1c50b
- hash_algorithm
- sha1
- url
- https://github.com/secondlife/3p-pcre/releases/download/v8.35-3c0eb51/pcre-8.35.3c0eb51-linux64-3c0eb51.tar.zst
-
- name
- linux64
-
- windows64
-
- archive
-
- hash
- 166564afb60a7536a038fae80e2fc9a41d6dbccb
- hash_algorithm
- sha1
- url
- https://github.com/secondlife/3p-pcre/releases/download/v8.35.979fd86/pcre-8.35.979fd86-windows64-979fd86.tar.zst
-
- name
- windows64
-
-
- license
- bsd
- license_file
- LICENSES/pcre-license.txt
- copyright
- Copyright (c) 1997-2014 University of Cambridge; Copyright(c) 2009-2014 Zoltan Herczeg; Copyright (c) 2007-2012, Google Inc.
- version
- 8.35.979fd86
- name
- pcre
- description
- PCRE Perl-compatible regular expression library
-
slvoice
platforms
@@ -2839,41 +2753,19 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
platforms
- darwin64
+ common
archive
hash
- deb47841d8e6c82fe9704aaa79d62846
+ 52bfa9057a5d34cd841e93624c03a0cdcdf7b12a
+ hash_algorithm
+ sha1
url
- https://3p.firestormviewer.org/viewer_fonts-1.240681616-common-240681616.tar.bz2
+ https://3p.firestormviewer.org/viewer_fonts-1.0.0.242151216-common-242151216.tar.bz2
name
- darwin64
-
- linux64
-
- archive
-
- hash
- deb47841d8e6c82fe9704aaa79d62846
- url
- https://3p.firestormviewer.org/viewer_fonts-1.240681616-common-240681616.tar.bz2
-
- name
- linux64
-
- windows64
-
- archive
-
- hash
- deb47841d8e6c82fe9704aaa79d62846
- url
- https://3p.firestormviewer.org/viewer_fonts-1.240681616-common-240681616.tar.bz2
-
- name
- windows64
+ common
license
@@ -2883,7 +2775,7 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors
copyright
Copyright 2016-2022 Brad Erickson CC-BY-4.0/MIT, Copyright 2016-2022 Twitter, Inc. CC-BY-4.0, Copyright 2013 Joe Loughry and Terence Eden MIT
version
- 1.579464
+ 1.0.0.10204976553
name
viewer-fonts
description
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index 2c2e3de14f..4b573efa80 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -59,7 +59,6 @@ if(WINDOWS)
libaprutil-1.dll
nghttp2.dll
glod.dll # restore GLOD
- libhunspell.dll
)
# Only copy OpenJPEG dll if needed
@@ -201,7 +200,6 @@ elseif(DARWIN)
libaprutil-1.dylib
${EXPAT_COPY}
libGLOD.dylib # restore GLOD
- libhunspell-1.3.0.dylib
libndofdev.dylib
libnghttp2.dylib
libnghttp2.14.dylib
@@ -271,7 +269,6 @@ elseif(LINUX)
libaprutil-1.so.0
- libhunspell-1.3.so.0.0.0
#libopenjp2.so
libuuid.so.16
libuuid.so.16.0.22
diff --git a/indra/cmake/Hunspell.cmake b/indra/cmake/Hunspell.cmake
index bb037c0237..129679febd 100644
--- a/indra/cmake/Hunspell.cmake
+++ b/indra/cmake/Hunspell.cmake
@@ -1,4 +1,5 @@
# -*- cmake -*-
+include(Linking)
include(Prebuilt)
include_guard()
@@ -8,10 +9,16 @@ add_library( ll::hunspell INTERFACE IMPORTED )
use_system_binary(hunspell)
use_prebuilt_binary(libhunspell)
if (WINDOWS)
- target_link_libraries( ll::hunspell INTERFACE libhunspell)
+ target_compile_definitions( ll::hunspell INTERFACE HUNSPELL_STATIC=1)
+ target_link_libraries( ll::hunspell INTERFACE
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/libhunspell.lib
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell.lib
+ )
elseif(DARWIN)
- target_link_libraries( ll::hunspell INTERFACE hunspell-1.3)
+ target_link_libraries( ll::hunspell INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell-1.7.a
+ )
elseif(LINUX)
- target_link_libraries( ll::hunspell INTERFACE hunspell-1.3)
+ target_link_libraries( ll::hunspell INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libhunspell-1.7.a
+ )
endif()
target_include_directories( ll::hunspell SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/hunspell)
diff --git a/indra/cmake/JPEG.cmake b/indra/cmake/JPEG.cmake
index 252d7852d4..ade5a070cc 100644
--- a/indra/cmake/JPEG.cmake
+++ b/indra/cmake/JPEG.cmake
@@ -7,12 +7,14 @@ include_guard()
add_library( ll::libjpeg INTERFACE IMPORTED )
use_system_binary(libjpeg)
-use_prebuilt_binary(jpeglib)
+use_prebuilt_binary(libjpeg-turbo)
if (LINUX)
- target_link_libraries( ll::libjpeg INTERFACE jpeg)
+ target_link_libraries( ll::libjpeg INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a)
elseif (DARWIN)
- target_link_libraries( ll::libjpeg INTERFACE jpeg)
+ target_link_libraries( ll::libjpeg INTERFACE ${ARCH_PREBUILT_DIRS_RELEASE}/libjpeg.a)
elseif (WINDOWS)
- target_link_libraries( ll::libjpeg INTERFACE jpeglib)
+ target_link_libraries( ll::libjpeg INTERFACE
+ debug ${ARCH_PREBUILT_DIRS_DEBUG}/jpeg.lib
+ optimized ${ARCH_PREBUILT_DIRS_RELEASE}/jpeg.lib)
endif (LINUX)
target_include_directories( ll::libjpeg SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include)
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
index 735f5e8052..1e81532551 100644
--- a/indra/cmake/LLPrimitive.cmake
+++ b/indra/cmake/LLPrimitive.cmake
@@ -6,7 +6,6 @@ include(Boost)
include_guard()
-add_library( ll::pcre INTERFACE IMPORTED )
add_library( ll::minizip-ng INTERFACE IMPORTED )
add_library( ll::libxml INTERFACE IMPORTED )
add_library( ll::colladadom INTERFACE IMPORTED )
@@ -22,11 +21,8 @@ use_system_binary( colladadom )
use_prebuilt_binary(colladadom)
use_prebuilt_binary(minizip-ng) # needed for colladadom
-use_prebuilt_binary(pcre)
use_prebuilt_binary(libxml2)
-target_link_libraries( ll::pcre INTERFACE pcrecpp pcre )
-
if (WINDOWS)
target_link_libraries( ll::minizip-ng INTERFACE libminizip )
else()
diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt
index 959be7e820..fe7895ba67 100644
--- a/indra/llprimitive/CMakeLists.txt
+++ b/indra/llprimitive/CMakeLists.txt
@@ -71,7 +71,6 @@ target_link_libraries(llprimitive
llrender
llphysicsextensions_impl
ll::colladadom
- ll::pcre
ll::glh_linear
)
diff --git a/indra/llui/llemojihelper.cpp b/indra/llui/llemojihelper.cpp
index 2d0db0280e..04806bec33 100644
--- a/indra/llui/llemojihelper.cpp
+++ b/indra/llui/llemojihelper.cpp
@@ -84,7 +84,9 @@ bool LLEmojiHelper::isCursorInEmojiCode(const LLWString& wtext, S32 cursorPos, S
shortCodePos--;
}
- bool isShortCode = (cursorPos - shortCodePos >= 2) && (L':' == wtext[shortCodePos - 1]); // FIRE-33773 - fix logic to avoid OOB access to wtext
+ bool isShortCode = (cursorPos - shortCodePos >= 2) && (L':' == wtext[shortCodePos - 1]);
+ if(isShortCode && (shortCodePos >= 2) && isdigit(wtext[shortCodePos - 2])) // Add qualifier to avoid emoji pop-up when typing times.
+ isShortCode = false;
if (pShortCodePos)
*pShortCodePos = (isShortCode) ? shortCodePos - 1 : -1;
return isShortCode;
diff --git a/indra/llui/llspellcheck.cpp b/indra/llui/llspellcheck.cpp
index 774aa40067..0ad9dbadc8 100644
--- a/indra/llui/llspellcheck.cpp
+++ b/indra/llui/llspellcheck.cpp
@@ -30,12 +30,7 @@
#include "llsdserialize.h"
#include "llspellcheck.h"
-#if LL_WINDOWS
- #include
- #pragma comment(lib, "libhunspell.lib")
-#else
- #include
-#endif
+#include
static const std::string DICT_DIR = "dictionaries";
static const std::string DICT_FILE_CUSTOM = "user_custom.dic";
@@ -64,11 +59,11 @@ void LLSpellChecker::initSingleton()
bool LLSpellChecker::checkSpelling(const std::string& word) const
{
- if ( (!mHunspell) || (word.length() < 3) || (0 != mHunspell->spell(word.c_str())) )
+ if ( (!mHunspell) || (word.length() < 3) || (0 != mHunspell->spell(word)) )
{
return true;
}
- if (mIgnoreList.size() > 0)
+ if (!mIgnoreList.empty())
{
std::string word_lower(word);
LLStringUtil::toLower(word_lower);
@@ -85,15 +80,8 @@ S32 LLSpellChecker::getSuggestions(const std::string& word, std::vectorsuggest(&suggestion_list, word.c_str())) != 0 )
- {
- for (int suggestion_index = 0; suggestion_index < suggestion_cnt; suggestion_index++)
- {
- suggestions.push_back(suggestion_list[suggestion_index]);
- }
- mHunspell->free_list(&suggestion_list, suggestion_cnt);
- }
+ suggestions = mHunspell->suggest(word);
+
return static_cast(suggestions.size());
}
@@ -194,7 +182,7 @@ void LLSpellChecker::addToCustomDictionary(const std::string& word)
{
if (mHunspell)
{
- mHunspell->add(word.c_str());
+ mHunspell->add(word);
}
addToDictFile(getDictionaryUserPath() + DICT_FILE_CUSTOM, word);
sSettingsChangeSignal();
@@ -441,7 +429,7 @@ bool LLSpellChecker::canRemoveDictionary(const std::string& dict_language)
const LLSD dict_info = getDictionaryData(dict_language);
return
(dict_info["user_installed"].asBoolean()) &&
- ( (!getUseSpellCheck()) || (!LLSpellChecker::instance().isActiveDictionary(dict_language)) );
+ ( (!getUseSpellCheck()) || (!isActiveDictionary(dict_language)) );
}
void LLSpellChecker::removeDictionary(const std::string& dict_language)
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index d9c33a36a0..0e6a7a6949 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -2178,7 +2178,6 @@ if (WINDOWS)
${CMAKE_SOURCE_DIR}/../etc/message.xml
${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg
#${SHARED_LIB_STAGING_DIR}/openjp2.dll # Only copy OpenJPEG dll if needed
- ${SHARED_LIB_STAGING_DIR}/libhunspell.dll
${SHARED_LIB_STAGING_DIR}/llwebrtc.dll
#${SHARED_LIB_STAGING_DIR}/${LL_INTDIR}/SLVoice.exe
#${SHARED_LIB_STAGING_DIR}/${LL_INTDIR}/libsndfile-1.dll
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 43e9717c13..332410ba64 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -712,9 +712,6 @@ class Windows_x86_64_Manifest(ViewerManifest):
# HTTP/2
self.path("nghttp2.dll")
- # Hunspell
- self.path("libhunspell.dll")
-
# BugSplat
if self.args.get('bugsplat'):
self.path("BsSndRpt64.exe")
@@ -1163,7 +1160,6 @@ class Darwin_x86_64_Manifest(ViewerManifest):
# with self.prefix(src=relpkgdir, dst=""):
# self.path("libndofdev.dylib")
- # self.path("libhunspell-1.3.a")
# with self.prefix(src_dst="cursors_mac"):
# self.path("*.tif")
@@ -1450,7 +1446,6 @@ class Darwin_x86_64_Manifest(ViewerManifest):
# copy additional libs in /Contents/MacOS/
self.path(os.path.join(relpkgdir, "libndofdev.dylib"), dst="Resources/libndofdev.dylib")
- self.path(os.path.join(relpkgdir, "libhunspell-1.3.0.dylib"), dst="Resources/libhunspell-1.3.0.dylib")
# CEF framework goes inside Contents/Frameworks.
# Remember where we parked this car.
@@ -2152,7 +2147,6 @@ class LinuxManifest(ViewerManifest):
self.path_optional("libfusion*.so*")
self.path_optional("libdirect*.so*")
self.path_optional("libopenjpeg.so*")
- self.path("libhunspell-1.3.so*")
self.path("libalut.so*")
#self.path("libpng15.so.15") #use provided libpng to workaround incompatible system versions on some distros
#self.path("libpng15.so.15.13.0") #use provided libpng to workaround incompatible system versions on some distros
@@ -2287,7 +2281,6 @@ class Linux_i686_Manifest(LinuxManifest):
self.path("libdirectfb-1.4.so.5")
self.path("libfusion-1.4.so.5")
self.path("libdirect-1.4.so.5*")
- self.path("libhunspell-1.3.so*")
self.path("libalut.so*")
self.path("libopenal.so*")