Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261230AbVEZHEH (ORCPT ); Thu, 26 May 2005 03:04:07 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261232AbVEZHEH (ORCPT ); Thu, 26 May 2005 03:04:07 -0400 Received: from parcelfarce.linux.theplanet.co.uk ([195.92.249.252]:32155 "EHLO parcelfarce.linux.theplanet.co.uk") by vger.kernel.org with ESMTP id S261230AbVEZHED (ORCPT ); Thu, 26 May 2005 03:04:03 -0400 Date: Thu, 26 May 2005 08:04:38 +0100 From: Al Viro To: Pekka J Enberg Cc: Anton Altaparmakov , linux-ntfs-dev@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: Re: ntfs: remove redundant assignments Message-ID: <20050526070437.GY29811@parcelfarce.linux.theplanet.co.uk> References: <1117044875.9510.2.camel@localhost> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.1i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1726 Lines: 36 On Thu, May 26, 2005 at 09:21:46AM +0300, Pekka J Enberg wrote: > On Wed, 2005-05-25 at 22:10 +0100, Anton Altaparmakov wrote: > >This is not. memset(0) is not the same as = NULL IMO. I don't care if > >the compiler thinks it is the same. NULL does not have to be 0 so I > >prefer to initialize pointers explicitly to NULL. Even more so since this > >code is not performance critical at all so I prefer clarity here. > > I kind of figured out you were doing it on purpose. The fact is, NULL is > zero on _all_ Linux architectures. If it weren't, we'd have a lot of broken > code. Let me play the devils advocate here: why do you memset() (now > kcalloc()) in the first place? Oh, come on... ictx = kmalloc(sizeof(ntfs_index_context), GFP_NOFS); if (ictx) *ictx = (ntfs_index_context){.idx_ni = idx_ni}; return ictx; and be done with that. Let compiler do its job. And yes, that *will* give properly initialized pointers even for weird platforms. Not that we had the slightest chance of porting to any of them... > There's a simple reason why I don't like explicit assignments: it's way too > easy to forget to initialize something. So use the proper constructs. Variant above is guaranteed to do the right thing on any C99 compiler, provided that kmalloc() returns NULL or pointer to object sufficiently large and properly aligned for ntfs_index_context. All missing fields will be initialized the same way they would for initializer of a static object. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/