Run the accumulator function for RUN_CLEANUP object handlers too

Closes issue #512
This commit is contained in:
Sebastian Dröge 2019-08-25 19:10:45 +02:00 committed by Emmanuel Fleury
parent 1f79c7f7c0
commit 153ac4c82a
2 changed files with 6 additions and 1 deletions

View File

@ -3759,9 +3759,14 @@ signal_emit_unlocked_R (SignalNode *node,
node->n_params + 1,
instance_and_params,
&emission.ihint);
if (!accumulate (&emission.ihint, emission_return, &accu, accumulator) &&
emission.state == EMISSION_RUN)
emission.state = EMISSION_STOP;
if (need_unset)
g_value_unset (&accu);
SIGNAL_LOCK ();
return_value_altered = TRUE;
emission.chain_type = G_TYPE_NONE;
if (emission.state == EMISSION_RESTART)

View File

@ -416,7 +416,7 @@ main (int argc,
g_print ("MAIN: emit test-signal:\n");
g_signal_emit_by_name (dobject, "test-signal", sigarg, NULL, &string);
g_message ("signal return: \"%s\"", string);
g_assert (strcmp (string, "<default_handler><default_handler>") == 0);
g_assert_cmpstr (string, ==, "<default_handler><default_handler><default_handler>");
g_free (string);
g_print ("MAIN: call iface print-string on test and derived object:\n");