@@ -33,7 +33,7 @@ static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len);
33
33
#ifdef JSON_GENERATOR
34
34
static void fbuffer_append_long (FBuffer * fb , long number );
35
35
#endif
36
- static void fbuffer_append_char (FBuffer * fb , char newchr );
36
+ static inline void fbuffer_append_char (FBuffer * fb , char newchr );
37
37
#ifdef JSON_GENERATOR
38
38
static VALUE fbuffer_to_s (FBuffer * fb );
39
39
#endif
@@ -66,29 +66,34 @@ static void fbuffer_clear(FBuffer *fb)
66
66
}
67
67
#endif
68
68
69
- static inline void fbuffer_inc_capa (FBuffer * fb , unsigned long requested )
69
+ static void fbuffer_do_inc_capa (FBuffer * fb , unsigned long requested )
70
70
{
71
- if (RB_UNLIKELY (requested > fb -> capa - fb -> len )) {
72
- unsigned long required ;
71
+ unsigned long required ;
73
72
74
- if (RB_UNLIKELY (!fb -> ptr )) {
75
- fb -> ptr = ALLOC_N (char , fb -> initial_length );
76
- fb -> capa = fb -> initial_length ;
77
- }
73
+ if (RB_UNLIKELY (!fb -> ptr )) {
74
+ fb -> ptr = ALLOC_N (char , fb -> initial_length );
75
+ fb -> capa = fb -> initial_length ;
76
+ }
77
+
78
+ for (required = fb -> capa ; requested > required - fb -> len ; required <<= 1 );
78
79
79
- for (required = fb -> capa ; requested > required - fb -> len ; required <<= 1 );
80
-
81
- if (required > fb -> capa ) {
82
- if (fb -> type == STACK ) {
83
- const char * old_buffer = fb -> ptr ;
84
- fb -> ptr = ALLOC_N (char , required );
85
- fb -> type = HEAP ;
86
- MEMCPY (fb -> ptr , old_buffer , char , fb -> len );
87
- } else {
88
- REALLOC_N (fb -> ptr , char , required );
89
- }
90
- fb -> capa = required ;
80
+ if (required > fb -> capa ) {
81
+ if (fb -> type == STACK ) {
82
+ const char * old_buffer = fb -> ptr ;
83
+ fb -> ptr = ALLOC_N (char , required );
84
+ fb -> type = HEAP ;
85
+ MEMCPY (fb -> ptr , old_buffer , char , fb -> len );
86
+ } else {
87
+ REALLOC_N (fb -> ptr , char , required );
91
88
}
89
+ fb -> capa = required ;
90
+ }
91
+ }
92
+
93
+ static inline void fbuffer_inc_capa (FBuffer * fb , unsigned long requested )
94
+ {
95
+ if (RB_UNLIKELY (requested > fb -> capa - fb -> len )) {
96
+ fbuffer_do_inc_capa (fb , requested );
92
97
}
93
98
}
94
99
@@ -113,7 +118,7 @@ static void fbuffer_append_str(FBuffer *fb, VALUE str)
113
118
}
114
119
#endif
115
120
116
- static void fbuffer_append_char (FBuffer * fb , char newchr )
121
+ static inline void fbuffer_append_char (FBuffer * fb , char newchr )
117
122
{
118
123
fbuffer_inc_capa (fb , 1 );
119
124
* (fb -> ptr + fb -> len ) = newchr ;
0 commit comments