Skip to content

[4.1-v0.0.17] Signal arguments makes it crash #175

@why-try313

Description

@why-try313

Concerned version

4.1-v0.0.17-alpha-20231003

Problem

It seems that any function passing arguments makes the application crash, both on editor connection and using the .connect(str, fn) method

What works:

  • Connect a signal via editor as long the signal doesn't return arguments (0 args)
  • Connect a signal via code as long the signal doesn't return arguments (0 args)
  • Connect a signal via code and pass an anonymous function to trigger the method with an argument
    this.connect("sig_name", () => { this.myMethod(myValueHere) })

What doesn't work:

  • Connect a signal via editor that passes at least one argument (full freeze)
  • Connect a signal via code that returns arguments (full freeze)
    this.connect("input_event", this.myMethod) // returns 5 arguments
  • Connect a signal via code that passes at least one argument as third parameter (argument ignored)
    this.connect("sig_name", this.myMethod, [myValue])
  • Connect a signal via code that passes at least one argument with bind (argument ignored)
    this.connect("sig_name", this.myMethod.bind(myValue))

Observations

  1. It seems that after re-establishing binding_script.js with some modifications the connect method in code passes the arguments array
// From
return godot_object_connect.apply(this, [signal, target, method_name, params, flags]);
// To
return godot_object_connect.apply(this, [signal, target[method_name], params, flags]);
/// Apply this to all Object.defineProperty return statements
  1. Connecting a method on the editor doesn't match the number of arguments since MethodInfo doesn't set the number of arguments in /quickjs/quickjs_binder.cpp:L1871
    connect issued

Note : The parameters seem to be received by the functions since they are logged on the terminal that runs godot but freezes the program completly after printing them

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions