Date: Tue, 27 May 2008 09:45:18 +0200 From: Marc Olzheim <marcolz@stack.nl> To: Krassimir Slavchev <krassi@bulinfo.net> Cc: FreeBSD <freebsd-stable@freebsd.org> Subject: Re: shmat() return values? Message-ID: <20080527074518.GA2593@zlo.nu> In-Reply-To: <483AEFFE.8080302@bulinfo.net> References: <483AEFFE.8080302@bulinfo.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, May 26, 2008 at 08:14:38PM +0300, Krassimir Slavchev wrote: > Hello, > > When I try: > > if ((*shm = shmat(shmid, NULL, 0)) == -1) > > The gcc complains with: > warning: comparison between pointer and integer > > shmat() is declared in shm.h as: > void *shmat(int, const void *, int); > > but 'man 4 shmat; > > RETURN VALUES > Upon success, shmat() returns the address where the segment is > attached; > otherwise, -1 is returned and errno is set to indicate the error. > > > What is the correct return value on failure, -1 or NULL? > I think it should be NULL? The return value is a void pointer, with value equivalent to -1, so (void *)-1 So you can replace it with: if ((*shm = shmat(shmid, NULL, 0)) == (void*)-1) Marc
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080527074518.GA2593>