Bug 19972 - Generated code can only crash on arrays
Summary: Generated code can only crash on arrays
Status: NEW
Alias: None
Product: Gtk#
Classification: Mono
Component: gtk-sharp ()
Version: unspecified
Hardware: PC Linux
: --- normal
Target Milestone: ---
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2014-05-21 15:19 UTC by Xavier Claessens
Modified: 2014-06-13 08:04 UTC (History)
2 users (show)

Tags:
Is this bug a regression?: ---
Last known good build:

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report for Bug 19972 on GitHub or Developer Community if you have new information to add and do not yet see a matching new report.

If the latest results still closely match this report, you can use the original description:

  • Export the original title and description: GitHub Markdown or Developer Community HTML
  • Copy the title and description into the new report. Adjust them to be up-to-date if needed.
  • Add your new information.

In special cases on GitHub you might also want the comments: GitHub Markdown with public comments

Related Links:
Status:
NEW

Description Xavier Claessens 2014-05-21 15:19:45 UTC
Array support in generated code is totally wrong. See for example the generated code for g_application_run():

		public int Run(int argc, string argv) {
			int raw_ret = g_application_run(Handle, argc, GLib.Marshaller.StringToPtrGStrdup(argv));
			int ret = raw_ret;
			return ret;
		}

That string will be interpreted by C code as an strv. The only thing it can do is a segfault. The proper generated API for that is "public int Run(string[] argv)" because the argc argument is already "contained" in the string[] type.
Comment 1 Xavier Claessens 2014-05-21 15:22:29 UTC
Branch reworking completely arrays: http://cgit.collabora.com/git/user/xclaesse/gtk-sharp.git/log/?h=array

I've been testing that to generate API from gio-sharp that uses gir xml https://github.com/xDarkice/gio-sharp.git. There are probably still some APIs that won't work, but for what I've seen it's all good :)
Comment 2 Bertrand Lorentz 2014-06-13 08:04:58 UTC
As mentioned by Xavier in bug #19838, the "array" branch linked above is not ready to be merged yet, as it doesn't take into account the implicit marshalling of arrays.

Xavier, for your information, you can also submit a pull request on https://github.com/mono/gtk-sharp