You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-24 15:26:15 +00:00
[Core] Disconnect one-shot signals before calling callbacks
This prevents infinite recursion with one-shot connections emitting themselves
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
# https://github.com/godotengine/godot/issues/89439
|
||||
extends Node
|
||||
|
||||
signal my_signal
|
||||
|
||||
func async_func():
|
||||
await my_signal
|
||||
my_signal.emit()
|
||||
|
||||
func test():
|
||||
async_func()
|
||||
my_signal.emit()
|
||||
@@ -0,0 +1 @@
|
||||
GDTEST_OK
|
||||
@@ -0,0 +1,22 @@
|
||||
# https://github.com/godotengine/godot/issues/89439
|
||||
|
||||
signal my_signal
|
||||
|
||||
func foo():
|
||||
print("Foo")
|
||||
my_signal.emit()
|
||||
|
||||
func bar():
|
||||
print("Bar")
|
||||
|
||||
func baz():
|
||||
print("Baz")
|
||||
|
||||
func test():
|
||||
@warning_ignore("return_value_discarded")
|
||||
my_signal.connect(foo, CONNECT_ONE_SHOT)
|
||||
@warning_ignore("return_value_discarded")
|
||||
my_signal.connect(bar, CONNECT_ONE_SHOT)
|
||||
@warning_ignore("return_value_discarded")
|
||||
my_signal.connect(baz)
|
||||
my_signal.emit()
|
||||
@@ -0,0 +1,5 @@
|
||||
GDTEST_OK
|
||||
Foo
|
||||
Baz
|
||||
Bar
|
||||
Baz
|
||||
Reference in New Issue
Block a user