shmat() return values?
Marc Olzheim
marcolz at stack.nl
Tue May 27 08:02:18 UTC 2008
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
More information about the freebsd-stable
mailing list