diff --git a/gperl-i11n-marshal-callback.c b/gperl-i11n-marshal-callback.c index 14ad003b5be2a112ba50229f99c9d7ccebbda1d3..d422de6b14a6cf322dd69fb566552c223b5f9147 100644 --- a/gperl-i11n-marshal-callback.c +++ b/gperl-i11n-marshal-callback.c @@ -57,8 +57,11 @@ sv_to_callback (GIArgInfo * arg_info, callback_info->closure, callback_info); #if GI_CHECK_VERSION (1, 72, 0) - return g_callable_info_get_closure_native_address (callback_interface_info, - callback_info->closure); + if (callback_info->closure) + return g_callable_info_get_closure_native_address (callback_interface_info, + callback_info->closure); + else + return NULL; #else return callback_info->closure; #endif diff --git a/t/callbacks.t b/t/callbacks.t index af035fdd60d7bd40ea14b4d315a69cc53f7c24bf..e8d30358df66bb0a4fc3491b6df01cc134d3c839 100644 --- a/t/callbacks.t +++ b/t/callbacks.t @@ -5,11 +5,15 @@ BEGIN { require './t/inc/setup.pl' }; use strict; use warnings; -plan tests => 25; +plan tests => 27; my $data = 42; my $result = 23; my $callback = sub { is @_, 1; is $_[0], $data; return $result; }; +my $empty_callback = sub { return $result }; + +is (Regress::test_callback ($empty_callback), $result); +is (Regress::test_callback (undef), 0); is (Regress::test_callback_user_data ($callback, $data), $result);