@@ -6,7 +6,14 @@ static VALUE rb_write_skippable_frame(int argc, VALUE *argv, VALUE self)
66{
77 VALUE input_value ;
88 VALUE skip_value ;
9- rb_scan_args (argc , argv , "2" , & input_value , & skip_value );
9+ VALUE kwargs ;
10+ rb_scan_args (argc , argv , "2:" , & input_value , & skip_value , & kwargs );
11+
12+ ID kwargs_keys [1 ];
13+ kwargs_keys [0 ] = rb_intern ("magic_variant" );
14+ VALUE kwargs_values [1 ];
15+ rb_get_kwargs (kwargs , kwargs_keys , 0 , 1 , kwargs_values );
16+ unsigned magic_variant = (kwargs_values [0 ] != Qundef ) ? (NUM2INT (kwargs_values [0 ])) : 0 ;
1017
1118 StringValue (input_value );
1219 StringValue (skip_value );
@@ -18,7 +25,7 @@ static VALUE rb_write_skippable_frame(int argc, VALUE *argv, VALUE self)
1825 size_t dst_size = input_size + ZSTD_SKIPPABLEHEADERSIZE + skip_size ;
1926 VALUE output = rb_str_new (input_data , dst_size );
2027 char * output_data = RSTRING_PTR (output );
21- size_t output_size = ZSTD_writeSkippableFrame ((void * )output_data , dst_size , (const void * )skip_data , skip_size , ( unsigned ) 0 );
28+ size_t output_size = ZSTD_writeSkippableFrame ((void * )output_data , dst_size , (const void * )skip_data , skip_size , magic_variant );
2229 if (ZSTD_isError (output_size )) {
2330 rb_raise (rb_eRuntimeError , "%s: %s" , "write skippable frame failed" , ZSTD_getErrorName (output_size ));
2431 }
@@ -39,7 +46,8 @@ static VALUE rb_read_skippable_frame(VALUE self, VALUE input_value)
3946 size_t const skipLen = 129 * 1024 ;
4047 VALUE output = rb_str_new (NULL , skipLen );
4148 char * output_data = RSTRING_PTR (output );
42- size_t output_size = ZSTD_readSkippableFrame ((void * )output_data , skipLen , (unsigned int * )0 , (const void * )input_data , input_size );
49+ unsigned readMagic ;
50+ size_t output_size = ZSTD_readSkippableFrame ((void * )output_data , skipLen , & readMagic , (const void * )input_data , input_size );
4351 if (ZSTD_isError (output_size )) {
4452 rb_raise (rb_eRuntimeError , "%s: %s" , "read skippable frame failed" , ZSTD_getErrorName (output_size ));
4553 }
0 commit comments