diff --git a/parse.y b/parse.y index 0e4a735..5b59419 100644 --- a/parse.y +++ b/parse.y @@ -6230,10 +6230,12 @@ parser_encode_length(struct parser_params *parser, const char *name, long len) if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0) return nlen; } - if (len > 4 && name[nlen = len - 5] == '-') { + if (len > 4 && name[nlen = len - 4] == '-') { if (rb_memcicmp(name + nlen + 1, "dos", 3) == 0) return nlen; - if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0) + if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0 && + !(len == 8 && rb_memcicmp(name, "utf8-mac", len) == 0) && + !(len == 9 && rb_memcicmp(name, "utf-8-mac", len) == 0)) return nlen; } return len;