diff options
| author | Jeff Epler <jepler@gmail.com> | 2020-05-28 07:40:56 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2020-05-28 08:36:08 -0500 |
| commit | fe3e8d1589e54de999cccc775f269a39443c82d6 (patch) | |
| tree | cbddbbf82646575a90e86a7dc5d1185bd2651c0c /py/moduerrno.c | |
| parent | 0db8b888d3e1928ae2a81f0ec9d3834a69989ed4 (diff) | |
string compression: save a few bits per string
Length was stored as a 16-bit number always. Most translations have
a max length far less. For example, US English translation lengths
always fit in just 8 bits. probably all languages fit in 9 bits.
This also has the side effect of reducing the alignment of
compressed_string_t from 2 bytes to 1.
testing performed: ran in german and english on pyruler, printed messages
looked right.
Firmware size, en_US
Before: 3044 bytes free in flash
After: 3408 bytes free in flash
Firmware size, de_DE (with #2967 merged to restore translations)
Before: 1236 bytes free in flash
After: 1600 bytes free in flash
Diffstat (limited to 'py/moduerrno.c')
| -rw-r--r-- | py/moduerrno.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/py/moduerrno.c b/py/moduerrno.c index 7915603e4..3be5adba1 100644 --- a/py/moduerrno.c +++ b/py/moduerrno.c @@ -158,7 +158,7 @@ const char *mp_common_errno_to_str(mp_obj_t errno_val, char *buf, size_t len) { case ENOSPC: desc = translate("No space left on device"); break; case EROFS: desc = translate("Read-only filesystem"); break; } - if (desc != NULL && desc->length <= len) { + if (desc != NULL && decompress_length(desc) <= len) { decompress(desc, buf); return buf; } |
