Update wrappers to use new gzip changes

This commit is contained in:
Bobby Jap 2023-08-28 21:36:32 -07:00
parent 36c0d81af8
commit ae181d69af
3 changed files with 12 additions and 7 deletions

View File

@ -71,12 +71,12 @@
//| ... //| ...
//| //|
STATIC mp_obj_t zlib_decompress(size_t n_args, const mp_obj_t *args) { STATIC mp_obj_t zlib_decompress(size_t n_args, const mp_obj_t *args) {
bool is_zlib = true; mp_int_t wbits = 0;
if (n_args > 1 && MP_OBJ_SMALL_INT_VALUE(args[1]) < 0) { if (n_args > 1) {
is_zlib = false; wbits = MP_OBJ_SMALL_INT_VALUE(args[1]);
} }
return common_hal_zlib_decompress(args[0], is_zlib); return common_hal_zlib_decompress(args[0], wbits);
} }
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(zlib_decompress_obj, 1, 3, zlib_decompress); STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(zlib_decompress_obj, 1, 3, zlib_decompress);

View File

@ -27,6 +27,6 @@
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H #ifndef MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H
#define MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H #define MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H
mp_obj_t common_hal_zlib_decompress(mp_obj_t data, bool is_zlib); mp_obj_t common_hal_zlib_decompress(mp_obj_t data, mp_int_t wbits);
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H #endif // MICROPY_INCLUDED_SHARED_BINDINGS_ZLIB___INIT___H

View File

@ -48,7 +48,7 @@
#define DEBUG_printf(...) (void)0 #define DEBUG_printf(...) (void)0
#endif #endif
mp_obj_t common_hal_zlib_decompress(mp_obj_t data, bool is_zlib) { mp_obj_t common_hal_zlib_decompress(mp_obj_t data, mp_int_t wbits) {
mp_buffer_info_t bufinfo; mp_buffer_info_t bufinfo;
mp_get_buffer_raise(data, &bufinfo, MP_BUFFER_READ); mp_get_buffer_raise(data, &bufinfo, MP_BUFFER_READ);
@ -66,7 +66,12 @@ mp_obj_t common_hal_zlib_decompress(mp_obj_t data, bool is_zlib) {
decomp->source_limit = (unsigned char *)bufinfo.buf + bufinfo.len; decomp->source_limit = (unsigned char *)bufinfo.buf + bufinfo.len;
int st; int st;
if (is_zlib) { if (wbits >= 16) {
st = uzlib_gzip_parse_header(decomp);
if (st < 0) {
goto error;
}
} else if (wbits >= 0) {
st = uzlib_zlib_parse_header(decomp); st = uzlib_zlib_parse_header(decomp);
if (st < 0) { if (st < 0) {
goto error; goto error;