@@ -416,7 +416,6 @@ decode_null_with_skip(mrb_state *mrb, Reader *r, uint8_t info)
416416static mrb_value
417417decode_float (mrb_state * mrb , Reader * r , uint8_t info )
418418{
419- mrb_float f ;
420419
421420 switch (info ) {
422421 case 25 : { /* Float16 */
@@ -453,7 +452,7 @@ decode_float(mrb_state *mrb, Reader *r, uint8_t info)
453452
454453 float f32 ;
455454 memcpy (& f32 , & u , sizeof (float ));
456- f = ( mrb_float ) f32 ;
455+ return mrb_convert_float ( mrb , f32 ) ;
457456 break ;
458457 }
459458
@@ -466,7 +465,7 @@ decode_float(mrb_state *mrb, Reader *r, uint8_t info)
466465
467466 float f32 ;
468467 memcpy (& f32 , & u , sizeof (float ));
469- f = ( mrb_float ) f32 ;
468+ return mrb_convert_float ( mrb , f32 ) ;
470469 break ;
471470 }
472471
@@ -483,16 +482,15 @@ decode_float(mrb_state *mrb, Reader *r, uint8_t info)
483482
484483 double f64 ;
485484 memcpy (& f64 , & u , sizeof (double ));
486- f = ( mrb_float ) f64 ;
485+ return mrb_convert_double ( mrb , f64 ) ;
487486 break ;
488487 }
489488
490489 default :
491490 mrb_raise (mrb , E_RUNTIME_ERROR , "invalid float encoding" );
492- f = 0 ;
493491 }
494492
495- return mrb_float_value ( mrb , f );
493+ return mrb_undef_value ( );
496494}
497495#endif
498496
0 commit comments