Created attachment 10259 [details] Исправление с зашитым UTF-8 При работе с KiCAD столкнулся с тем, что библиотеки проекта не находятся, если путь до проекта содержит русские буквы. Библиотеки проекта ищутся относительно переменной окружения KIPRJMOD. И оказалось, что если там есть что-то кроме ASCII, то wxGetEnv() возвращает пустую строку. Насколько я понимаю, проблема там на стр. 1330 модуля utilsunx.cpp (http://git.altlinux.org/gears/w/wxGTK3.0.git?p=wxGTK3.0.git;a=blob;f=src/unix/utilsunx.cpp;h=b9664094228d2deb1a7a00709dfac073734c8bfc;hb=3274364fc9016f31e61c8fd489fcb7a8ac9e33d9#l1330): 1321 bool wxGetEnv(const wxString& var, wxString *value) 1322 { 1323 // wxGetenv is defined as getenv() 1324 char *p = wxGetenv(var); 1325 if ( !p ) 1326 return false; 1327 1328 if ( value ) 1329 { 1330 *value = p; 1331 } 1332 1333 return true; 1334 } Здесь char* присваивается wxString*. Магия C++, конечно, создаёт объект, но о кодировке она ничего не знает. И в результате из непустой char* получаем пустую wxString. Исправление, на первый взгляд, кажется тривиальным (прикладываю) — но только, если забыть о том, что кроме UTF-8 существуют и другие кодировки. P.S. Завожу ошибку в p10, поскольку проверял на нём. Но похоже, что эта проблема должна быть и в Сизифе, и на wxGTK3.1. Потому что везде один и тот же код. Хотя, возможно, отличаются конструкторы.
Created attachment 10260 [details] Программа для проверки
Прикладываю прогу, которой проверял: [builder@localhost ~]$ echo $LANG ru_RU.UTF-8 [builder@localhost ~]$ TESTVAR='Проверка' ./wxGetEnv_test Test string: "". [builder@localhost ~]$ LD_PRELOAD=./libwx_baseu-3.0.so TESTVAR='Проверка' ./wxGetEnv_test Test string: "Проверка". В последнем случае через LD_PRELOAD подгружается исправленная библиотека.