diff --git a/ChangeLog b/ChangeLog index 12b2445d0..f300020bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-05-06 Mike Kestner + + * generator/ReturnValue.cs: null-term array marshaling for vms. + * generator/VirtualMethod.cs: use ToNative return type in native + callbacks. + [Fixes #501294] Patch by Sebastian Dröge. + 2009-05-06 Mike Kestner * generator/FieldBase.cs: mangle compound typenames for glue. diff --git a/generator/ReturnValue.cs b/generator/ReturnValue.cs index fa70d0070..bbf0c2905 100644 --- a/generator/ReturnValue.cs +++ b/generator/ReturnValue.cs @@ -110,9 +110,7 @@ namespace GtkSharp.Generation { get { if (IGen == null) return String.Empty; - else if (is_null_term) - return "IntPtr"; //FIXME - return IGen.ToNativeReturnType + (is_array ? "[]" : String.Empty); + return IGen.ToNativeReturnType + (is_array || is_null_term ? "[]" : String.Empty); } } @@ -144,7 +142,7 @@ namespace GtkSharp.Generation { string args = ", typeof (" + ElementType + "), " + (owned ? "true" : "false") + ", " + (elements_owned ? "true" : "false"); var = "new " + IGen.QualifiedName + "(" + var + args + ")"; } else if (is_null_term) - return String.Format ("GLib.Marshaller.StringArrayToNullTermPtr ({0})", var); + return String.Format ("GLib.Marshaller.StringArrayToNullTermPointer ({0})", var); if (IGen is IManualMarshaler) return (IGen as IManualMarshaler).AllocNative (var); diff --git a/generator/VirtualMethod.cs b/generator/VirtualMethod.cs index 9756ad702..670eb2401 100644 --- a/generator/VirtualMethod.cs +++ b/generator/VirtualMethod.cs @@ -74,9 +74,9 @@ namespace GtkSharp.Generation { native_signature += parms.ImportSignature; sw.WriteLine ("\t\t[GLib.CDeclCallback]"); - sw.WriteLine ("\t\tdelegate {0} {1}NativeDelegate ({2});", retval.MarshalType, this.Name, native_signature); + sw.WriteLine ("\t\tdelegate {0} {1}NativeDelegate ({2});", retval.ToNativeType, this.Name, native_signature); sw.WriteLine (); - sw.WriteLine ("\t\tstatic {0} {1}_cb ({2})", retval.MarshalType, this.Name, native_signature); + sw.WriteLine ("\t\tstatic {0} {1}_cb ({2})", retval.ToNativeType, this.Name, native_signature); sw.WriteLine ("\t\t{"); string unconditional = call.Unconditional ("\t\t\t"); if (unconditional.Length > 0)