@@ -1444,16 +1444,14 @@ static VALUE generate_json_try(VALUE d)
14441444
14451445 data -> func (data -> buffer , data , data -> obj );
14461446
1447- return Qnil ;
1447+ return fbuffer_finalize ( data -> buffer ) ;
14481448}
14491449
1450- static VALUE generate_json_rescue (VALUE d , VALUE exc )
1450+ static VALUE generate_json_ensure (VALUE d )
14511451{
14521452 struct generate_json_data * data = (struct generate_json_data * )d ;
14531453 fbuffer_free (data -> buffer );
14541454
1455- rb_exc_raise (exc );
1456-
14571455 return Qundef ;
14581456}
14591457
@@ -1474,9 +1472,7 @@ static VALUE cState_partial_generate(VALUE self, VALUE obj, generator_func func,
14741472 .obj = obj ,
14751473 .func = func
14761474 };
1477- rb_rescue (generate_json_try , (VALUE )& data , generate_json_rescue , (VALUE )& data );
1478-
1479- return fbuffer_finalize (& buffer );
1475+ return rb_ensure (generate_json_try , (VALUE )& data , generate_json_ensure , (VALUE )& data );
14801476}
14811477
14821478/* call-seq:
@@ -1522,9 +1518,7 @@ static VALUE cState_generate_new(int argc, VALUE *argv, VALUE self)
15221518 .obj = obj ,
15231519 .func = generate_json
15241520 };
1525- rb_rescue (generate_json_try , (VALUE )& data , generate_json_rescue , (VALUE )& data );
1526-
1527- return fbuffer_finalize (& buffer );
1521+ return rb_ensure (generate_json_try , (VALUE )& data , generate_json_ensure , (VALUE )& data );
15281522}
15291523
15301524static VALUE cState_initialize (int argc , VALUE * argv , VALUE self )
@@ -2030,9 +2024,7 @@ static VALUE cState_m_generate(VALUE klass, VALUE obj, VALUE opts, VALUE io)
20302024 .obj = obj ,
20312025 .func = generate_json ,
20322026 };
2033- rb_rescue (generate_json_try , (VALUE )& data , generate_json_rescue , (VALUE )& data );
2034-
2035- return fbuffer_finalize (& buffer );
2027+ return rb_ensure (generate_json_try , (VALUE )& data , generate_json_ensure , (VALUE )& data );
20362028}
20372029
20382030/*
0 commit comments