diff --git a/ChangeLog b/ChangeLog index ad44345be..adcef2fb3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-02-03 Mike Kestner + + * generator/Signal.cs : virtual method enum retvals must be case to + Enum before casting to their ultimate type. Also dispose retval + gvalues to avoid reference leaks. + 2005-01-31 Mike Kestner * gnome/About.custom : fix some nullterm issues in subclass diff --git a/generator/Signal.cs b/generator/Signal.cs index b9fbc3ba7..d2580019b 100644 --- a/generator/Signal.cs +++ b/generator/Signal.cs @@ -334,8 +334,12 @@ namespace GtkSharp.Generation { sw.WriteLine (cleanup); sw.WriteLine ("\t\t\tforeach (GLib.Value v in vals)"); sw.WriteLine ("\t\t\t\tv.Dispose ();"); - if (!IsVoid) - sw.WriteLine ("\t\t\treturn (" + retval.CSType + ") ret;"); + if (!IsVoid) { + IGeneratable igen = SymbolTable.Table [retval.CType]; + sw.WriteLine ("\t\t\t" + retval.CSType + " result = (" + (igen is EnumGen ? retval.CSType + ") (Enum" : retval.CSType) + ") ret;"); + sw.WriteLine ("\t\t\tret.Dispose ();"); + sw.WriteLine ("\t\t\treturn result;"); + } sw.WriteLine ("\t\t}\n"); }