Summary
Keywords get encoded with leading NUL byte, breaking read-write invariance of symbols starting with a NUL byte
Metadata
- Id: 2c668d6417c9ef0f9e48d5a9b18d68cc377d757d
- Trac id: 1576
- Type: defect
- Reporter: sjamaan
- Owner:
- Cc:
- Status: closed
- Component: core libraries
- Estimated difficulty: medium
- Resolution: fixed
- Priority: minor
- Milestone: 5.1
- Version: 5.0.0
- Changetime: 2019-05-02 18:38:37 UTC
- Created: 2019-01-12 16:29:55 UTC
- Keywords: keywords, symbols, read-write invariance
Description
Similar to #1077, the string belonging to keywords still get interned by prefixing it with a NUL byte. This means (string->symbol "\000foo") gets read as a keyword and printed back as `#:foo`.
This is of course not really correct.
Fixing it means we'll need to get rid of the in-bound signaling of the keyword information. A potential fix could involve storing keywords in a different symbol table than regular symbols.
Changes and comments
[2019-05-02 18:38:37 UTC] sjamaan changed status from new to closed
[2019-05-02 18:38:37 UTC] sjamaan set resolution to fixed
[2019-05-02 18:38:37 UTC] sjamaan wrote:
Fixed with 8665e7a and a1cd6afd