This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: sbrk() does not set errno on overflow


Cyril Hrubis <chrubis@suse.cz> writes:

> diff --git a/misc/sbrk.c b/misc/sbrk.c
> index 87b5472..7ff3921 100644
> --- a/misc/sbrk.c
> +++ b/misc/sbrk.c
> @@ -50,8 +50,10 @@ __sbrk (intptr_t increment)
>    if ((increment > 0
>         ? ((uintptr_t) oldbrk + (uintptr_t) increment < (uintptr_t) oldbrk)
>         : ((uintptr_t) oldbrk < (uintptr_t) -increment))
> -      || __brk (oldbrk + increment) < 0)
> +      || __brk (oldbrk + increment) < 0) {
> +    __set_errno (ENOMEM);
>      return (void *) -1;
> +  }

You should only set errno if __brk wasn't the reason for the error.
Also wrong indentation.

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]