Re: [PATCH v2] Cygwin: Fix error return for madvise()
Christian Franke <[email protected]> Fri, 10 Jul 2026 13:13:43 +0200
| Newsgroups | gmane.os.cygwin.patches |
|---|---|
| Message-ID | <[email protected]> |
Hi Mark,
Mark Geisert wrote:
> Hi Christian,
>
> On 7/8/2026 7:58 AM, Christian Franke wrote:
>> Mark Geisert wrote:
>>> Currently madvise() and posix_madvise() are wired together as one
>>> function: the latter. But their error returns should be different.
>>> Make madvise a first-class export in cygwin.din.
>>>
>>> v2: Create madvise_worker() and have madvise() and posix_madvise()
>>> call it, then handling their error returns compliant to POSIX.
>>> Add a release note for 3.7.0.
>>
>> LGTM, thanks!
>>
>>
>>> ...
>>> -extern "C" int
>>> -posix_madvise (void *addr, size_t len, int advice)
>>> +static int
>>> +madvise_worker (void *addr, size_t len, int advice)
>>> {
>>> int ret = 0;
>>> /* Check parameters. */
>>> @@ -1514,6 +1514,26 @@ posix_madvise (void *addr, size_t len, int
>>> advice)
>>> break;
>>> }
>>> out:
>>> + return ret;
>>> +}
>>
>> PS: The 'goto out' could now be replaced by 'return ref'.
>
> I prefer to keep both 'goto out' so there's just one exit from the
> function to aid future debugging. Perhaps that's an old-school habit.
:-)
Don't take me wrong, the patch is GTG, IMO.
--
Regards,
Christian
PS: I prefer early returns if possible, declarations when needed instead
of on top, and avoid 'goto's (which conflict with 'declarations when
needed' of C++ objects). See fhandler/dev_disk.cc.