From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from casper.infradead.org ([85.118.1.10]:48441 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750907Ab1AZJ3w (ORCPT ); Wed, 26 Jan 2011 04:29:52 -0500 Message-ID: <4D3FE986.9030603@infradead.org> Date: Wed, 26 Jan 2011 07:29:42 -0200 From: Mauro Carvalho Chehab MIME-Version: 1.0 To: =?ISO-8859-1?Q?Peter_H=FCwe?= CC: Julia Lawall , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, Steven Toth , Tejun Heo , Dan Carpenter Subject: Re: [PATCH] video/saa7164: Fix sparse warning: Using plain integer as NULL pointer References: <1295988851-23561-1-git-send-email-peterhuewe@gmx.de> <201101252354.31217.PeterHuewe@gmx.de> In-Reply-To: <201101252354.31217.PeterHuewe@gmx.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit List-ID: Sender: Em 25-01-2011 20:54, Peter Hüwe escreveu: > Am Dienstag 25 Januar 2011, 23:20:44 schrieb Julia Lawall: >> On Tue, 25 Jan 2011, Peter Huewe wrote: >>> This patch fixes the warning "Using plain integer as NULL pointer", >>> generated by sparse, by replacing the offending 0s with NULL. >> >> I recall (a number of years ago) being told that for things like kmalloc, >> the proper test was !x, not x == NULL. >> >> julia >> > > > Hi Julia, > > thanks for your input. > So do I understand you correctly if I say > if(!x) is better than if(x==NULL) in any case? > > Or only for the kmalloc family? > > Do you remember the reason why !x should be preferred? > > In Documentation/CodingStyle , Chapter 7: Centralized exiting of functions > there is a function fun with looks like this: > int fun(int a) > { > int result = 0; > char *buffer = kmalloc(SIZE); > > if (buffer == NULL) > return -ENOMEM; > > if (condition1) { > while (loop1) { > ... > } > result = 1; > goto out; > } > ... > out: > kfree(buffer); > return result; > } > > > --> So if (buffer == NULL) is in the official CodingStyle - maybe we should > add a paragraph there as well ;) > > > Don't get me wrong, I just want to learn ;) Both ways are acceptable. But because C is a Spartan language, and because I need to review lots of code, I prefer the more synthetic way: if (!buf) That means less things to read, and saves me a few microsseconds of reading and processing it on my mind. In general, such tests occur just after a malloc or a malloc-like function, so it is really obvious that you're testing for a pointer. Cheers, Mauro