diff --git a/ChangeLog b/ChangeLog index c84fc6d7e..c966ae9ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-03-03 Mike Kestner + + * generator/ClassBase.cs : use "as" instead of a cast in FromNative. + * generator/Method.cs : remove the if/else checks for Object retvals. + * glib/Object.cs : return null immediately for NULL in GetObject. + 2005-03-03 Mike Kestner * generator/ClassBase.cs : add null checking to CallByName. No sense diff --git a/generator/ClassBase.cs b/generator/ClassBase.cs index 412bbce19..66957f59f 100644 --- a/generator/ClassBase.cs +++ b/generator/ClassBase.cs @@ -164,7 +164,7 @@ namespace GtkSharp.Generation { public override string FromNative(string var) { - return "(" + QualifiedName + ") GLib.Object.GetObject(" + var + ")"; + return "GLib.Object.GetObject(" + var + ") as " + QualifiedName; } protected void GenProperties (GenerationInfo gen_info) diff --git a/generator/Method.cs b/generator/Method.cs index bc62990e8..ef0cd1e4a 100644 --- a/generator/Method.cs +++ b/generator/Method.cs @@ -327,7 +327,7 @@ namespace GtkSharp.Generation { sw.Write(indent + "\t\t\t"); if (retval.MarshalType == "void") { sw.WriteLine(CName + call + ";"); - } else if (ret_igen is ObjectGen || ret_igen is OpaqueGen) { + } else if (ret_igen is OpaqueGen) { sw.WriteLine(retval.MarshalType + " raw_ret = " + CName + call + ";"); sw.WriteLine(indent +"\t\t\t" + retval.CSType + " ret;"); sw.WriteLine(indent + "\t\t\tif (raw_ret == IntPtr.Zero)"); diff --git a/glib/Object.cs b/glib/Object.cs index ae2fbc78b..28a5a32fc 100644 --- a/glib/Object.cs +++ b/glib/Object.cs @@ -91,6 +91,9 @@ namespace GLib { public static Object GetObject(IntPtr o, bool owned_ref) { + if (o == IntPtr.Zero) + return null; + Object obj; WeakReference weak_ref = Objects[o] as WeakReference; if (weak_ref != null && weak_ref.IsAlive) {