summaryrefslogtreecommitdiff
path: root/py/moduerrno.c
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2020-05-28 07:40:56 -0500
committerJeff Epler <jepler@gmail.com>2020-05-28 08:36:08 -0500
commitfe3e8d1589e54de999cccc775f269a39443c82d6 (patch)
treecbddbbf82646575a90e86a7dc5d1185bd2651c0c /py/moduerrno.c
parent0db8b888d3e1928ae2a81f0ec9d3834a69989ed4 (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.c2
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;
}