From 48eb86c62db5e181ba74436b34f6d0ff11a8a14d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 11 Nov 2006 17:07:56 +0000 Subject: [PATCH] DRMS: use Unicode Win32 API --- modules/demux/mp4/drms.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/demux/mp4/drms.c b/modules/demux/mp4/drms.c index 2914c5d903..f68bab9e80 100644 --- a/modules/demux/mp4/drms.c +++ b/modules/demux/mp4/drms.c @@ -1779,30 +1779,35 @@ static int GetSCIData( char *psz_ipod, uint32_t **pp_sci, if( psz_ipod == NULL ) { #ifdef WIN32 - char *p_filename = "\\Apple Computer\\iTunes\\SC Info\\SC Info.sidb"; + const wchar_t *wfile = + L"\\Apple Computer\\iTunes\\SC Info\\SC Info.sidb"; typedef HRESULT (WINAPI *SHGETFOLDERPATH)( HWND, int, HANDLE, DWORD, - LPSTR ); + LPWSTR ); HINSTANCE shfolder_dll = NULL; SHGETFOLDERPATH dSHGetFolderPath = NULL; + wchar_t wpath[PATH_MAX]; if( ( shfolder_dll = LoadLibrary( _T("SHFolder.dll") ) ) != NULL ) { dSHGetFolderPath = (SHGETFOLDERPATH)GetProcAddress( shfolder_dll, - _T("SHGetFolderPathA") ); + _T("SHGetFolderPathW") ); } if( dSHGetFolderPath != NULL && SUCCEEDED( dSHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, - NULL, 0, p_tmp ) ) ) + NULL, 0, wpath ) ) ) { - strncat( p_tmp, p_filename, min( strlen( p_filename ), - (sizeof(p_tmp) - 1) - strlen( p_tmp ) ) ); + if (wcslen( wpath ) + wcslen( wfile ) >= PATH_MAX ) + { + return -1; + } + wcscat( wpath, wfile ); - psz_path = FromLocale( p_tmp ); + psz_path = FromWide( wpath ); strncpy( p_tmp, psz_path, sizeof( p_tmp ) - 1 ); p_tmp[sizeof( p_tmp ) - 1] = '\0'; - LocaleFree( psz_path ); + free( psz_path ); psz_path = p_tmp; } -- GitLab