[vlc-commits] commit: GetWindowsError: use FromWide() ( Rémi Denis-Courmont )
git at videolan.org
git at videolan.org
Tue Aug 3 17:33:39 CEST 2010
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Aug 3 18:33:13 2010 +0300| [85a61b6d4fa0c4746712a045d89428fcee6d36b1] | committer: Rémi Denis-Courmont
GetWindowsError: use FromWide()
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=85a61b6d4fa0c4746712a045d89428fcee6d36b1
---
src/modules/os.c | 38 +++++++++-----------------------------
1 files changed, 9 insertions(+), 29 deletions(-)
diff --git a/src/modules/os.c b/src/modules/os.c
index cc33c51..9110c79 100644
--- a/src/modules/os.c
+++ b/src/modules/os.c
@@ -291,43 +291,23 @@ static void *module_Lookup( module_handle_t handle, const char *psz_function )
}
#if defined(HAVE_DL_WINDOWS)
+# include <wchar.h>
+
static char * GetWindowsError( void )
{
-#if defined(UNDER_CE)
- wchar_t psz_tmp[MAX_PATH];
- char * psz_buffer = malloc( MAX_PATH );
-#else
- char * psz_tmp = malloc( MAX_PATH );
-#endif
+ wchar_t wmsg[256];
int i = 0, i_error = GetLastError();
- FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, i_error, MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR)psz_tmp, MAX_PATH, NULL );
+ FormatMessageW( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL, i_error, MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT),
+ wmsg, 256, NULL );
/* Go to the end of the string */
- while( psz_tmp[i] && psz_tmp[i] != _T('\r') && psz_tmp[i] != _T('\n') )
- {
+ while( !wmemchr( L"\r\n\0", wmsg[i], 3 ) )
i++;
- }
-
- if( psz_tmp[i] )
- {
-#if defined(UNDER_CE)
- swprintf( psz_tmp + i, L" (error %i)", i_error );
- psz_tmp[ 255 ] = L'\0';
-#else
- snprintf( psz_tmp + i, 256 - i, " (error %i)", i_error );
- psz_tmp[ 255 ] = '\0';
-#endif
- }
-#if defined(UNDER_CE)
- wcstombs( psz_buffer, psz_tmp, MAX_PATH );
- return psz_buffer;
-#else
- return psz_tmp;
-#endif
+ snwprintf( wmsg + i, 256 - i, L" (error %i)", i_error );
+ return FromWide( wmsg );
}
#endif /* HAVE_DL_WINDOWS */
#endif /* HAVE_DYNAMIC_PLUGINS */
More information about the vlc-commits
mailing list