Summary
checked inline procedures should not call intern
Metadata
- Id: 4e40be906cce9735e7a9f8104ece833bd96e0acc
- Trac id: 1797
- Type: defect
- Reporter: sjamaan
- Owner: felix
- Cc:
- Status: closed
- Component: core libraries
- Estimated difficulty: easy
- Resolution: fixed
- Priority: major
- Milestone: 5.4
- Version: 5.3.0
- Changetime: 2022-05-20 11:43:47 UTC
- Created: 2022-02-08 13:23:32 UTC
- Keywords:
Description
As found by Felix, inline safe procedures like `C_i_char_equalp` call `C_i_check_char_2` which requires a call to `intern0` to provide error reporting, sometimes more than once, even when there's no error.
This is highly inefficient and should be done differently. A quick fix would be to pass `C_SCHEME_FALSE` (or use the non-`_2` version like `C_i_check_char`) but perhaps it's better to have C versions of the checking predicates that can call intern0 on a C string in case of error.
Changes and comments
[2022-05-19 11:50:52 UTC] felix changed status from new to accepted
[2022-05-19 11:50:52 UTC] felix set owner to felix
[2022-05-20 11:43:47 UTC] sjamaan changed status from accepted to closed
[2022-05-20 11:43:47 UTC] sjamaan set resolution to fixed
[2022-05-20 11:43:47 UTC] sjamaan wrote:
Fixed with 2d1f3dbdb2a57cf01c6720648ad7cc5e8bc27d7c