From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:34643) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SaRWj-0006rU-4z for qemu-devel@nongnu.org; Fri, 01 Jun 2012 09:04:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SaRWa-0003gT-EV for qemu-devel@nongnu.org; Fri, 01 Jun 2012 09:04:24 -0400 Received: from cantor2.suse.de ([195.135.220.15]:32777 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SaRWa-0003g9-4N for qemu-devel@nongnu.org; Fri, 01 Jun 2012 09:04:16 -0400 Message-ID: <4FC8BDC6.70804@suse.de> Date: Fri, 01 Jun 2012 15:04:06 +0200 From: =?UTF-8?B?QW5kcmVhcyBGw6RyYmVy?= MIME-Version: 1.0 References: <1338394747-17427-1-git-send-email-imammedo@redhat.com> <4FC6533C.3010207@samsung.com> <4FC744FE.3030203@redhat.com> <4FC7533B.2060102@redhat.com> <4FC890CE.8080005@suse.de> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH qom-next] qom: make object cast assert if NULL object is passed as argument List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: aliguori@us.ibm.com, Igor Mitsyanko , alexander_barabash@mentor.com, qemu-devel@nongnu.org, Paolo Bonzini , Igor Mammedov Am 01.06.2012 13:18, schrieb Markus Armbruster: > Andreas F=C3=A4rber writes: >=20 >> Am 31.05.2012 13:17, schrieb Igor Mammedov: >>> On 05/31/2012 12:16 PM, Paolo Bonzini wrote: >>>> Il 31/05/2012 10:30, Markus Armbruster ha scritto: >>>>>>> Makes much sense, but maybe it should be done in OBJECT() cast? A= ssert >>>>>>> when we do OBJECT(NULL). >>>>> In my opinion, OBJECT(p) where p is a null pointer is perfectly val= id >>>>> and should yield a null pointer. >>>> >>>> Perhaps object_dynamic_cast and object_dynamic_cast_assert should do= the >>>> same? >>>> >>> >>> or better object_dynamic_cast should return NULL if obj is NULL, >>> after all it's expected that it may return NULL >> >> That's what I was suggesting: I think that we should define "NULL is n= ot >> of type TYPE_FOO" and thus have the ..._is_... functions return false, >> and have the ..._cast_assert assert. >=20 > Is it? See http://www.mail-archive.com/qemu-devel@nongnu.org/msg113922.html > Igor: object_dynamic_cast should return NULL if obj is NULL, >=20 > You: have the ..._cast_assert assert [on null argument, I presume] >=20 > Doesn't sound like the same suggestion to me :) I'll let you to your opinion. :) However, my opinion is that object_dynamic_cast_assert() should assert (its name should be program), not segfault, and that object_dynamic_cast()/object_is_type()/type_is_ancestor() should not assert but return false / NULL. So as to the effects and usability that pretty much aligns with Igor M., no? > If I understood you correctly: what do such assertions buy us other tha= n > silliness like >=20 > p ? some_cast(p) : NULL >=20 > ? Nack. The point is that currently deployed MY_TYPE(x) should assert (because nobody expects it to return NULL) and he who does want to handle NULL can use object_dynamic_cast(p). There's no real change to what we have except that an error case that was unhandled now is handled. >> So I still think this patch is correct. It could be accompanied by >> further patches adding error handling in the remaining functions. >=20 > I'm not convinced. Shed any light? Andreas --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=C3=B6rffer; HRB 16746 AG N=C3=BC= rnberg