2626struct StringBuilder * StringBuilder_create ()
2727{
2828 struct StringBuilder * builder = (struct StringBuilder * ) BoltMem_allocate (sizeof (struct StringBuilder ));
29- builder -> buffer = BoltMem_allocate (1 * sizeof (char ));
30- builder -> buffer [0 ] = '\0' ;
29+ builder -> buffer = ( char * ) BoltMem_allocate (256 * sizeof (char ));
30+ builder -> buffer [0 ] = 0 ;
3131 builder -> buffer_pos = 0 ;
32- builder -> buffer_size = 1 ;
32+ builder -> buffer_size = 256 ;
3333 return builder ;
3434}
3535
@@ -45,7 +45,7 @@ void StringBuilder_ensure_buffer(struct StringBuilder* builder, size_t size_to_a
4545 return ;
4646 }
4747
48- size_t new_size = builder -> buffer_pos + size_to_add + 1 ;
48+ size_t new_size = builder -> buffer_pos + size_to_add ;
4949 builder -> buffer = (char * ) BoltMem_reallocate (builder -> buffer , builder -> buffer_size , new_size );
5050 builder -> buffer_size = new_size ;
5151}
@@ -57,27 +57,27 @@ void StringBuilder_append(struct StringBuilder* builder, const char* string)
5757
5858void StringBuilder_append_n (struct StringBuilder * builder , const char * string , const size_t len )
5959{
60- StringBuilder_ensure_buffer (builder , len );
60+ StringBuilder_ensure_buffer (builder , len + 1 );
6161 strncpy (builder -> buffer + builder -> buffer_pos , string , len );
6262 builder -> buffer_pos += len ;
63- builder -> buffer [builder -> buffer_pos ] = '\0' ;
63+ builder -> buffer [builder -> buffer_pos ] = 0 ;
6464}
6565
6666void StringBuilder_append_f (struct StringBuilder * builder , const char * format , ...)
6767{
68- int size = 512 * sizeof (char );
69- char * message_fmt = BoltMem_allocate (size );
68+ size_t size = 10240 * sizeof (char );
69+ char * message_fmt = ( char * ) BoltMem_allocate (size );
7070 while (1 ) {
7171 va_list args ;
7272 va_start (args , format );
73- int written = vsnprintf (message_fmt , size , format , args );
73+ size_t written = vsnprintf (message_fmt , size , format , args );
7474 va_end (args );
7575 if (written < size ) {
7676 break ;
7777 }
78- BoltMem_deallocate ( message_fmt , size );
79- size = size * 2 ;
80- message_fmt = BoltMem_allocate ( size ) ;
78+
79+ message_fmt = ( char * ) BoltMem_reallocate ( message_fmt , size , written + 1 ) ;
80+ size = written + 1 ;
8181 }
8282
8383 StringBuilder_append (builder , message_fmt );
0 commit comments