<div dir="ltr"><div>On 1 April 2016 at 16:55, Denis Kozlov <span dir="ltr"><<a href="mailto:dezlov@gmail.com" target="_blank">dezlov@gmail.com</a>></span> wrote:<br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>In Lazarus 1.4.4, GetAppConfigDirUTF8 and GetAppConfigFileUTF8 internally use GetAppConfigDirAnsi and GetAppConfigFileAnsi (unless running on Windows CE), respectively. These functions call ANSI version of Windows API and then map the result into UTF8.<br></div><div class="gmail_extra"><div class="gmail_quote"><br><div>If there are characters in the path which do not exist in your current system ANSI code page, then you would get question marks instead, e.g. "Configura??es".</div></div></div></div></blockquote><div><br></div><div><br></div><div>This issue also affects Lazarus 1.6 and FPC 3.0+.</div><div><br></div><div>GetWindowsSpecialDir in FPC 3.0.0 and trunk has severe encoding and buffer overrun issues. SHGetFolderPath links to SHGetFolderPathW if FPC_UNICODE_RTL is defined. But GetWindowsSpecialDir still calls it as SHGetFolderPathA, passing under-sized PChar buffer instead of PWideChar.</div><div><div><br></div></div><div>Working on a fix.</div><div><br></div><div>Denis</div></div></div></div>