@@ -240,6 +240,15 @@ rb_whisper_params_mark(void *p)
240240void
241241ruby_whisper_params_free (ruby_whisper_params * rwp )
242242{
243+ if (rwp -> params .language ) {
244+ ruby_xfree ((void * )rwp -> params .language );
245+ }
246+ if (rwp -> params .initial_prompt ) {
247+ ruby_xfree ((void * )rwp -> params .initial_prompt );
248+ }
249+ if (rwp -> params .vad_model_path ) {
250+ ruby_xfree ((void * )rwp -> params .vad_model_path );
251+ }
243252}
244253
245254void
@@ -276,6 +285,9 @@ ruby_whisper_params_allocate(VALUE klass)
276285 ruby_whisper_params * rwp ;
277286 VALUE obj = TypedData_Make_Struct (klass , ruby_whisper_params , & ruby_whisper_params_type , rwp );
278287 rwp -> params = whisper_full_default_params (WHISPER_SAMPLING_GREEDY );
288+ rwp -> params .language = NULL ;
289+ rwp -> params .initial_prompt = NULL ;
290+ rwp -> params .vad_model_path = NULL ;
279291 rwp -> diarize = false;
280292 rwp -> vad_params = TypedData_Wrap_Struct (cVADParams , & ruby_whisper_vad_params_type , (void * )& rwp -> params .vad_params );
281293 rwp -> new_segment_callback_container = rb_whisper_callback_container_allocate ();
@@ -299,7 +311,7 @@ ruby_whisper_params_set_language(VALUE self, VALUE value)
299311 if (value == Qfalse || value == Qnil ) {
300312 rwp -> params .language = "auto" ;
301313 } else {
302- rwp -> params .language = StringValueCStr (value );
314+ rwp -> params .language = ruby_strdup ( StringValueCStr (value ) );
303315 }
304316 return value ;
305317}
@@ -608,7 +620,7 @@ ruby_whisper_params_set_initial_prompt(VALUE self, VALUE value)
608620{
609621 ruby_whisper_params * rwp ;
610622 TypedData_Get_Struct (self , ruby_whisper_params , & ruby_whisper_params_type , rwp );
611- rwp -> params .initial_prompt = StringValueCStr (value );
623+ rwp -> params .initial_prompt = ruby_strdup ( StringValueCStr (value ) );
612624 return value ;
613625}
614626/*
@@ -1108,7 +1120,7 @@ ruby_whisper_params_set_vad_model_path(VALUE self, VALUE value)
11081120 return value ;
11091121 }
11101122 VALUE path = ruby_whisper_normalize_model_path (value );
1111- rwp -> params .vad_model_path = StringValueCStr (path );
1123+ rwp -> params .vad_model_path = ruby_strdup ( StringValueCStr (path ) );
11121124 return value ;
11131125}
11141126
0 commit comments