@@ -819,16 +819,16 @@ mrb_uv_getnameinfo(mrb_state *mrb, mrb_value self)
819819
820820 mrb_get_args (mrb , "&o|i" , & block , & sock , & flags );
821821
822- if (mrb_nil_p (block )) {
823- mrb_raise (mrb , E_ARGUMENT_ERROR , "Expected callback in uv_getaddrinfo." );
824- }
825-
826822 addr = (struct sockaddr * )mrb_data_check_get_ptr (mrb , sock , & mrb_uv_ip4addr_type );
827823 if (!addr ) {
828824 addr = (struct sockaddr * )mrb_data_check_get_ptr (mrb , sock , & mrb_uv_ip6addr_type );
829825 }
830826
831827 req = mrb_uv_req_current (mrb , block , & ret );
828+ if (mrb_nil_p (req -> block )) {
829+ mrb_uv_req_clear (req );
830+ mrb_raise (mrb , E_ARGUMENT_ERROR , "Expected callback in uv_getaddrinfo." );
831+ }
832832 mrb_uv_req_check_error (mrb , req , uv_getnameinfo (
833833 mrb_uv_current_loop (mrb ), & req -> req .getnameinfo ,
834834 mrb_uv_getnameinfo_cb , addr , flags ));
@@ -899,10 +899,6 @@ mrb_uv_getaddrinfo(mrb_state *mrb, mrb_value self)
899899
900900 mrb_get_args (mrb , "SS|H&" , & node , & service , & mrb_hints , & b );
901901
902- if (mrb_nil_p (b )) {
903- mrb_raise (mrb , E_ARGUMENT_ERROR , "Expected callback in uv_getaddrinfo." );
904- }
905-
906902 // parse hints
907903 value = mrb_hash_get (mrb , mrb_hints , mrb_symbol_value (mrb_intern_lit (mrb , "ai_family" )));
908904 if (mrb_obj_equal (mrb , value , mrb_symbol_value (mrb_intern_lit (mrb , "ipv4" )))) {
@@ -930,6 +926,10 @@ mrb_uv_getaddrinfo(mrb_state *mrb, mrb_value self)
930926 }
931927
932928 req = mrb_uv_req_current (mrb , b , & ret );
929+ if (mrb_nil_p (req -> block )) {
930+ mrb_uv_req_clear (req );
931+ mrb_raise (mrb , E_ARGUMENT_ERROR , "Expected callback in uv_getaddrinfo." );
932+ }
933933 mrb_uv_req_check_error (mrb , req , uv_getaddrinfo (
934934 mrb_uv_current_loop (mrb ), & req -> req .getaddrinfo , _uv_getaddrinfo_cb ,
935935 RSTRING_PTR (node ), RSTRING_PTR (service ), & hints ));
0 commit comments