diff options
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.patch | 78 |
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 + |