[vlc-devel] [vlc-commits] dmo: fix logging of WCHAR as a char

Hugo Beauzée-Luyssen hugo at beauzee.fr
Wed Apr 3 10:15:38 CEST 2019


On Wed, Apr 3, 2019, at 9:56 AM, Steve Lhomme wrote:
> vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Wed Apr  3 
> 09:42:07 2019 +0200| [67108c24830956f38cb101180ad87841d91a5df9] | 
> committer: Steve Lhomme
> 
> dmo: fix logging of WCHAR as a char
> 
> We read the value as a WCHAR (UNICODE is set) so we can't use the string for
> logging directly.
> 
> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=67108c24830956f38cb101180ad87841d91a5df9
> ---
> 
>  modules/codec/dmo/dmo.c | 18 +++++++-----------
>  1 file changed, 7 insertions(+), 11 deletions(-)
> 
> diff --git a/modules/codec/dmo/dmo.c b/modules/codec/dmo/dmo.c
> index 65f7dae01f..2c6fea8a84 100644
> --- a/modules/codec/dmo/dmo.c
> +++ b/modules/codec/dmo/dmo.c
> @@ -48,12 +48,6 @@
>  # define DMO_DEBUG 1
>  #endif
>  
> -#ifdef UNICODE
> -# define PRIs "%ls"
> -#else
> -# define PRIs "%s"
> -#endif
> -
>  typedef long (STDCALL *GETCLASS) ( const GUID*, const GUID*, void** );
>  
>  /*****************************************************************************
> @@ -244,9 +238,10 @@ static int DecoderOpen( vlc_object_t *p_this )
>      {
>          if( decoders_table[i].i_fourcc == p_dec->fmt_in.i_codec )
>          {
> -            msg_Dbg( p_dec, "DMO codec for %4.4s may work with dll="PRIs,
> -                     (char*)&p_dec->fmt_in.i_codec,
> -                     decoders_table[i].psz_dll );
> +            char *log_dll = FromWide( decoders_table[i].psz_dll );
> +            msg_Dbg( p_dec, "DMO codec for %4.4s may work with dll=%s",
> +                     (char*)&p_dec->fmt_in.i_codec, log_dll);
> +            free( log_dll );
>              goto found;
>          }
>      }
> @@ -748,8 +743,9 @@ loader:
>      *p_hmsdmo_dll = LoadLibrary( codecs_table[i_codec].psz_dll );
>      if( *p_hmsdmo_dll == NULL )
>      {
> -        msg_Dbg( p_this, "failed loading '"PRIs"'",
> -                 codecs_table[i_codec].psz_dll );
> +        char *log_dll = FromWide(codecs_table[i_codec].psz_dll);
> +        msg_Dbg( p_this, "failed loading '%s'", log_dll );
> +        free( log_dll );
>          return VLC_EGENERIC;
>      }
>  

Hi,

This feels weird, %ls (or %S) should be able to print wchar_t directly.

Regards,

-- 
  Hugo Beauzée-Luyssen
  hugo at beauzee.fr


More information about the vlc-devel mailing list