Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
vala
vala
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 703
    • Issues 703
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 39
    • Merge Requests 39
  • Operations
    • Operations
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • External Wiki
    • External Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
  • GNOME
  • valavala
  • Issues
  • #721

Closed
Open
Opened Dec 21, 2018 by Rico Tzschichholz@ricotzMaintainer

GIR parser fails on cyclic closure/destroy parameter references

A GIR which includes cross referencing parameters for closure/destroy parameters for a callback will result in them being omitted completely

      <method name="spawn_async"
              c:identifier="vte_pty_spawn_async"
              version="0.48">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="pty" transfer-ownership="none">
            <type name="Pty" c:type="VtePty*"/>
          </instance-parameter>
          <parameter name="working_directory"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="argv" transfer-ownership="none">
            <array c:type="char**">
              <type name="filename"/>
            </array>
          </parameter>
          <parameter name="envv"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <array c:type="char**">
              <type name="filename"/>
            </array>
          </parameter>
          <parameter name="spawn_flags" transfer-ownership="none">
            <type name="GLib.SpawnFlags" c:type="GSpawnFlags"/>
          </parameter>
          <parameter name="child_setup"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="5"
                     destroy="6">
            <type name="GLib.SpawnChildSetupFunc"
                  c:type="GSpawnChildSetupFunc"/>
          </parameter>
          <parameter name="child_setup_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="4">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="child_setup_data_destroy"
                     transfer-ownership="none"
                     scope="async"
                     destroy="5">
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="timeout" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="10">
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="spawn_finish"
              c:identifier="vte_pty_spawn_finish"
              version="0.48"
              throws="1">
        <source-position filename="vte/vtepty.h" line="113"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="pty" transfer-ownership="none">
            <type name="Pty" c:type="VtePty*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="child_pid"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <type name="GLib.Pid" c:type="GPid*"/>
          </parameter>
        </parameters>
      </method>

results in

public async bool spawn_async (string? working_directory, [CCode (array_length = false, array_null_terminated = true)]
    string[] argv, [CCode (array_length = false, array_null_terminated = true)] string[]? envv, GLib.SpawnFlags spawn_flags,
    int timeout, GLib.Cancellable? cancellable, out GLib.Pid child_pid) throws GLib.Error;

and misses child_setup, but should be

public async bool spawn_async (string? working_directory, [CCode (array_length = false, array_null_terminated = true)]
    string[] argv, [CCode (array_length = false, array_null_terminated = true)] string[]? envv, GLib.SpawnFlags spawn_flags,
    [CCode (delegate_target_pos = 5.33333, destroy_notify_pos = 5.66667)] owned GLib.SpawnChildSetupFunc? child_setup,
    int timeout, GLib.Cancellable? cancellable, out GLib.Pid child_pid) throws GLib.Error;
To upload designs, you'll need to enable LFS and have admin enable hashed storage. More information
Assignee
Assign to
0.48
Milestone
0.48
Assign milestone
Time tracking
None
Due date
None
Reference: GNOME/vala#721