@@ -104,11 +104,17 @@ JNIEXPORT jstring JNICALL
104104Java_org_herb_Herb_extractRuby (JNIEnv * env , jclass clazz , jstring source , jobject options ) {
105105 const char * src = (* env )-> GetStringUTFChars (env , source , 0 );
106106
107+ hb_allocator_T allocator ;
108+ if (!hb_allocator_init (& allocator , HB_ALLOCATOR_ARENA )) {
109+ (* env )-> ReleaseStringUTFChars (env , source , src );
110+ return NULL ;
111+ }
112+
107113 hb_buffer_T output ;
108114
109- if (!hb_buffer_init (& output , strlen (src ))) {
115+ if (!hb_buffer_init (& output , strlen (src ), & allocator )) {
116+ hb_allocator_destroy (& allocator );
110117 (* env )-> ReleaseStringUTFChars (env , source , src );
111-
112118 return NULL ;
113119 }
114120
@@ -136,18 +142,12 @@ Java_org_herb_Herb_extractRuby(JNIEnv* env, jclass clazz, jstring source, jobjec
136142 }
137143 }
138144
139- hb_allocator_T allocator ;
140- if (!hb_allocator_init (& allocator , HB_ALLOCATOR_ARENA )) {
141- (* env )-> ReleaseStringUTFChars (env , source , src );
142- return NULL ;
143- }
144-
145145 herb_extract_ruby_to_buffer_with_options (src , & output , & extract_options , & allocator );
146146
147147 jstring result = (* env )-> NewStringUTF (env , output .value );
148148
149+ hb_buffer_free (& output );
149150 hb_allocator_destroy (& allocator );
150- free (output .value );
151151 (* env )-> ReleaseStringUTFChars (env , source , src );
152152
153153 return result ;
@@ -157,17 +157,16 @@ JNIEXPORT jstring JNICALL
157157Java_org_herb_Herb_extractHTML (JNIEnv * env , jclass clazz , jstring source ) {
158158 const char * src = (* env )-> GetStringUTFChars (env , source , 0 );
159159
160- hb_buffer_T output ;
161-
162- if (!hb_buffer_init (& output , strlen (src ))) {
160+ hb_allocator_T allocator ;
161+ if (!hb_allocator_init (& allocator , HB_ALLOCATOR_ARENA )) {
163162 (* env )-> ReleaseStringUTFChars (env , source , src );
164-
165163 return NULL ;
166164 }
167165
168- hb_allocator_T allocator ;
169- if (!hb_allocator_init (& allocator , HB_ALLOCATOR_ARENA )) {
170- free (output .value );
166+ hb_buffer_T output ;
167+
168+ if (!hb_buffer_init (& output , strlen (src ), & allocator )) {
169+ hb_allocator_destroy (& allocator );
171170 (* env )-> ReleaseStringUTFChars (env , source , src );
172171 return NULL ;
173172 }
@@ -176,8 +175,8 @@ Java_org_herb_Herb_extractHTML(JNIEnv* env, jclass clazz, jstring source) {
176175
177176 jstring result = (* env )-> NewStringUTF (env , output .value );
178177
178+ hb_buffer_free (& output );
179179 hb_allocator_destroy (& allocator );
180- free (output .value );
181180 (* env )-> ReleaseStringUTFChars (env , source , src );
182181
183182 return result ;
0 commit comments