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

Steve Lhomme robux4 at ycbcr.xyz
Wed Apr 3 10:22:54 CEST 2019


On 4/3/2019 10:15 AM, Hugo Beauzée-Luyssen wrote:
> 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.

Ah, I did not know that. I'll push force changing these calls.


More information about the vlc-devel mailing list