@@ -11,22 +11,12 @@ void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source)
1111 }
1212
1313 int size_needed = WideCharToMultiByte (CP_UTF8 , 0 , source , (int )length , NULL , 0 , NULL , NULL );
14- ffStrbufEnsureFree (result , (uint32_t )size_needed );
15- WideCharToMultiByte (CP_UTF8 , 0 , source , (int )length , result -> chars , size_needed , NULL , NULL );
16- result -> length = (uint32_t )size_needed ;
17- result -> chars [size_needed ] = '\0' ;
18- }
19-
20- void ffStrbufInitNWS (FFstrbuf * result , uint32_t length , const wchar_t * source )
21- {
22- if (!length )
14+ if (size_needed < 0 )
2315 {
24- ffStrbufInit (result );
16+ ffStrbufSetF (result , "WCTMB failed: %u" , ( unsigned ) GetLastError () );
2517 return ;
2618 }
27-
28- int size_needed = WideCharToMultiByte (CP_UTF8 , 0 , source , (int )length , NULL , 0 , NULL , NULL );
29- ffStrbufInitA (result , (uint32_t )size_needed + 1 );
19+ ffStrbufEnsureFixedLengthFree (result , (uint32_t )size_needed );
3020 WideCharToMultiByte (CP_UTF8 , 0 , source , (int )length , result -> chars , size_needed , NULL , NULL );
3121 result -> length = (uint32_t )size_needed ;
3222 result -> chars [size_needed ] = '\0' ;
0 commit comments