py: Allow to pass buffer protocol flags to get_buffer helper funcs.
diff --git a/py/modstruct.c b/py/modstruct.c
index 945f4fe..cd2516b 100644
--- a/py/modstruct.c
+++ b/py/modstruct.c
@@ -56,7 +56,7 @@
uint size = calcsize_items(fmt);
mp_obj_tuple_t *res = mp_obj_new_tuple(size, NULL);
mp_buffer_info_t bufinfo;
- mp_get_buffer_raise(data_in, &bufinfo);
+ mp_get_buffer_raise(data_in, &bufinfo, MP_BUFFER_READ);
byte *p = bufinfo.buf;
for (uint i = 0; i < size; i++) {
diff --git a/py/obj.c b/py/obj.c
index e0a712c..4b72514 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -357,20 +357,20 @@
}
MP_DEFINE_CONST_FUN_OBJ_1(mp_identity_obj, mp_identity);
-bool mp_get_buffer(mp_obj_t obj, mp_buffer_info_t *bufinfo) {
+bool mp_get_buffer(mp_obj_t obj, mp_buffer_info_t *bufinfo, int flags) {
mp_obj_type_t *type = mp_obj_get_type(obj);
if (type->buffer_p.get_buffer == NULL) {
return false;
}
- int ret = type->buffer_p.get_buffer(obj, bufinfo, MP_BUFFER_READ);
+ int ret = type->buffer_p.get_buffer(obj, bufinfo, flags);
if (ret != 0 || bufinfo->buf == NULL) {
return false;
}
return true;
}
-void mp_get_buffer_raise(mp_obj_t obj, mp_buffer_info_t *bufinfo) {
- if (!mp_get_buffer(obj, bufinfo)) {
+void mp_get_buffer_raise(mp_obj_t obj, mp_buffer_info_t *bufinfo, int flags) {
+ if (!mp_get_buffer(obj, bufinfo, flags)) {
nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "object with buffer protocol required"));
}
}
diff --git a/py/obj.h b/py/obj.h
index 969f2fc..dd25ec4 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -209,8 +209,8 @@
typedef struct _mp_buffer_p_t {
machine_int_t (*get_buffer)(mp_obj_t obj, mp_buffer_info_t *bufinfo, int flags);
} mp_buffer_p_t;
-bool mp_get_buffer(mp_obj_t obj, mp_buffer_info_t *bufinfo);
-void mp_get_buffer_raise(mp_obj_t obj, mp_buffer_info_t *bufinfo);
+bool mp_get_buffer(mp_obj_t obj, mp_buffer_info_t *bufinfo, int flags);
+void mp_get_buffer_raise(mp_obj_t obj, mp_buffer_info_t *bufinfo, int flags);
// Stream protocol
typedef struct _mp_stream_p_t {
diff --git a/py/objfun.c b/py/objfun.c
index 633f5d0..ab63260 100644
--- a/py/objfun.c
+++ b/py/objfun.c
@@ -427,7 +427,7 @@
return (machine_uint_t)items;
} else {
mp_buffer_info_t bufinfo;
- if (mp_get_buffer(obj, &bufinfo)) {
+ if (mp_get_buffer(obj, &bufinfo, MP_BUFFER_WRITE)) {
// supports the buffer protocol, return a pointer to the data
return (machine_uint_t)bufinfo.buf;
} else {
diff --git a/py/objint.c b/py/objint.c
index 8bec4a3..110876e 100644
--- a/py/objint.c
+++ b/py/objint.c
@@ -273,7 +273,7 @@
// get the buffer info
mp_buffer_info_t bufinfo;
- mp_get_buffer_raise(args[1], &bufinfo);
+ mp_get_buffer_raise(args[1], &bufinfo, MP_BUFFER_READ);
// convert the bytes to an integer
machine_uint_t value = 0;