@@ -17,20 +17,17 @@ void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source)
1717 result -> chars [size_needed ] = '\0' ;
1818}
1919
20- FFstrbuf ffStrbufCreateNWS ( uint32_t length , const wchar_t * source )
20+ void ffStrbufInitNWS ( FFstrbuf * result , uint32_t length , const wchar_t * source )
2121{
22- FFstrbuf result ;
23-
24- if (length == 0 )
25- ffStrbufInit (& result );
26- else
22+ if (!length )
2723 {
28- int size_needed = WideCharToMultiByte (CP_UTF8 , 0 , source , (int )length , NULL , 0 , NULL , NULL );
29- ffStrbufInitA (& result , (uint32_t )size_needed );
30- WideCharToMultiByte (CP_UTF8 , 0 , source , (int )length , result .chars , size_needed , NULL , NULL );
31- result .length = (uint32_t )size_needed ;
32- result .chars [size_needed ] = '\0' ;
24+ ffStrbufInit (result );
25+ return ;
3326 }
3427
35- return result ;
28+ int size_needed = WideCharToMultiByte (CP_UTF8 , 0 , source , (int )length , NULL , 0 , NULL , NULL );
29+ ffStrbufInitA (result , (uint32_t )size_needed + 1 );
30+ WideCharToMultiByte (CP_UTF8 , 0 , source , (int )length , result -> chars , size_needed , NULL , NULL );
31+ result -> length = (uint32_t )size_needed ;
32+ result -> chars [size_needed ] = '\0' ;
3633}
0 commit comments