[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Merging feature/android
From: |
Arsen Arsenović |
Subject: |
Re: Merging feature/android |
Date: |
Mon, 06 Mar 2023 12:12:52 +0100 |
Po Lu <luangruo@yahoo.com> writes:
> Arsen Arsenović <arsen@aarsen.me> writes:
>
>> -fexceptions is useful if it is possible to get a call stack which
>> invokes C++ through a C function through a C++ function, for instance,
>> if the comparator of a qsort could throw. This provides the user of a
>> given C API to gracefully handle thrown errors. Alternatively, it also
>> allows the C API developers to (mostly) gracefully clean up when a C++
>> exception remains uncaught. This is why libc is compiled with
>> -fexceptions for instance.
>>
>> __attribute__((cleanup)) will run cleanups during stack unwinding:
>
> Only if you build Emacs with -fexceptions.
>
>> ‘cleanup (CLEANUP_FUNCTION)’
>> The ‘cleanup’ attribute runs a function when the variable goes out
>> of scope. This attribute can only be applied to auto function
>> scope variables; it may not be applied to parameters or variables
>> with static storage duration. The function must take one
>> parameter, a pointer to a type compatible with the variable. The
>> return value of the function (if any) is ignored.
>>
>> If ‘-fexceptions’ is enabled, then CLEANUP_FUNCTION is run during
>> the stack unwinding that happens during the processing of the
>> exception. Note that the ‘cleanup’ attribute does not allow the
>> exception to be caught, only to perform an action. It is undefined
>> what happens if CLEANUP_FUNCTION does not return normally.
>>
>> IMO, the price of exceptions is overblown, so it could be worthwhile
>> adopting this, if I understand the context right.
>
> If a C++ exception is thrown inside a module function, then we should
> IMO just let everything blow up. How are they different from any other
> kind of unexpected error in a dynamic module, such as for instance an
> arithmetic trap, memory access error, or perhaps a Pascal exception?
I agree that it is unnecessary to support them. The context that I took
to understand is specifically wanting to support C++ modules. If that
is not the case, then -fexceptions is not worth enabling, indeed.
--
Arsen Arsenović
signature.asc
Description: PGP signature
- Re: Merging feature/android, (continued)
- Re: Merging feature/android, Eli Zaretskii, 2023/03/05
- Re: Merging feature/android, Po Lu, 2023/03/05
- Re: Merging feature/android, Eli Zaretskii, 2023/03/05
- Re: Merging feature/android, Po Lu, 2023/03/05
- Re: Merging feature/android, Paul Eggert, 2023/03/05
- Re: Merging feature/android, Po Lu, 2023/03/05
- Re: Merging feature/android, Paul Eggert, 2023/03/05
- Re: Merging feature/android, Po Lu, 2023/03/05
- Re: Merging feature/android, Arsen Arsenović, 2023/03/06
- Re: Merging feature/android, Po Lu, 2023/03/06
- Re: Merging feature/android,
Arsen Arsenović <=
- Re: Merging feature/android, Eli Zaretskii, 2023/03/06
- Re: Merging feature/android, Po Lu, 2023/03/06
- Re: Merging feature/android, Eli Zaretskii, 2023/03/06
- Re: Merging feature/android, Po Lu, 2023/03/06
- Re: Merging feature/android, Eli Zaretskii, 2023/03/07
- Re: Merging feature/android, Po Lu, 2023/03/07
- Re: Merging feature/android, Eli Zaretskii, 2023/03/07
- Re: Merging feature/android, Po Lu, 2023/03/07
- Re: Merging feature/android, Paul Eggert, 2023/03/08
- Re: Merging feature/android, Po Lu, 2023/03/08