summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-p2p/amule/files/amule-2.3.2-fix-crash-shared-dir-utf8.patch')
-rw-r--r--net-p2p/amule/files/amule-2.3.2-fix-crash-shared-dir-utf8.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/net-p2p/amule/files/amule-2.3.2-fix-crash-shared-dir-utf8.patch b/net-p2p/amule/files/amule-2.3.2-fix-crash-shared-dir-utf8.patch
new file mode 100644
index 000000000000..aa92ff6c81ee
--- /dev/null
+++ b/net-p2p/amule/files/amule-2.3.2-fix-crash-shared-dir-utf8.patch
@@ -0,0 +1,78 @@
+From 17816ed02f59bab9c27310e7f24c73266b0a3003 Mon Sep 17 00:00:00 2001
+From: persmule <persmule@gmail.com>
+Date: Wed, 5 Oct 2016 13:47:46 +0800
+Subject: [PATCH] Add a routine to set file name conversion for amuled which
+ based on wxAppConsole
+
+---
+ src/amule.h | 7 +++++++
+ src/amuled.cpp | 35 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 42 insertions(+)
+
+diff --git a/src/amule.h b/src/amule.h
+index f25702f60..240c02dd9 100644
+--- a/src/amule.h
++++ b/src/amule.h
+@@ -553,6 +553,13 @@ private:
+ int OnExit();
+
+ virtual int InitGui(bool geometry_enable, wxString &geometry_string);
++ // The GTK wxApps sets its file name conversion properly
++ // in wxApp::Initialize(), while wxAppConsole::Initialize()
++ // does not, leaving wxConvFile being set to wxConvLibc. File
++ // name conversion should be set otherwise amuled will abort to
++ // handle non-ASCII file names which monolithic amule can handle.
++ // This function are overrided to perform this.
++ virtual bool Initialize(int& argc_, wxChar **argv_);
+
+ #ifdef AMULED_APPTRAITS
+ struct sigaction m_oldSignalChildAction;
+diff --git a/src/amuled.cpp b/src/amuled.cpp
+index 486da5973..86e1ff8b8 100644
+--- a/src/amuled.cpp
++++ b/src/amuled.cpp
+@@ -704,6 +704,41 @@ int CamuleDaemonApp::InitGui(bool ,wxString &)
+ return 0;
+ }
+
++bool CamuleDaemonApp::Initialize(int& argc_, wxChar **argv_)
++{
++ if ( !wxAppConsole::Initialize(argc_, argv_) ) {
++ return false;
++ }
++
++#ifdef __UNIX__
++ wxString encName;
++#if wxUSE_INTL
++ // if a non default locale is set,
++ // assume that the user wants his
++ // filenames in this locale too
++ encName = wxLocale::GetSystemEncodingName().Upper();
++
++ // But don't consider ASCII in this case.
++ if ( !encName.empty() ) {
++ if ( encName == wxT("US-ASCII") ) {
++ // This means US-ASCII when returned
++ // from GetEncodingFromName().
++ encName.clear();
++ }
++ }
++#endif // wxUSE_INTL
++
++ // in this case, UTF-8 is used by default.
++ if ( encName.empty() ) {
++ encName = wxT("UTF-8");
++ }
++
++ static wxConvBrokenFileNames fileconv(encName);
++ wxConvFileName = &fileconv;
++#endif // __UNIX__
++
++ return true;
++}
+
+ int CamuleDaemonApp::OnExit()
+ {
+--
+2.16.4
+