summaryrefslogtreecommitdiff
path: root/shared-bindings/gamepad/GamePad.c
diff options
context:
space:
mode:
authorRadomir Dopieralski <openstack@sheep.art.pl>2018-03-31 20:41:16 +0200
committerRadomir Dopieralski <openstack@sheep.art.pl>2018-03-31 20:41:16 +0200
commit6ca4fd82eddcaaf75b0052d6a14a5938ffce8153 (patch)
tree3f0a41a311eb40dbdddf288c43baf635421a0e1f /shared-bindings/gamepad/GamePad.c
parent3215b85568af98987c8d54af4e691637a74e91bc (diff)
Add a type check to the gamepad module
Make sure that all the arguments passed are indeed DigitalInOut. This avoids crashes when the users pass something else.
Diffstat (limited to 'shared-bindings/gamepad/GamePad.c')
-rw-r--r--shared-bindings/gamepad/GamePad.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/shared-bindings/gamepad/GamePad.c b/shared-bindings/gamepad/GamePad.c
index a03b9318d..d80d1fcf6 100644
--- a/shared-bindings/gamepad/GamePad.c
+++ b/shared-bindings/gamepad/GamePad.c
@@ -27,6 +27,7 @@
#include "py/runtime.h"
#include "py/mphal.h"
#include "shared-module/gamepad/GamePad.h"
+#include "shared-bindings/digitalio/DigitalInOut.h"
#include "GamePad.h"
@@ -96,6 +97,12 @@ STATIC mp_obj_t gamepad_make_new(const mp_obj_type_t *type, size_t n_args,
gamepad_singleton = m_new_obj(gamepad_obj_t);
gamepad_singleton->base.type = &gamepad_type;
}
+ for (size_t i = 0; i < n_args; ++i) {
+ if (!MP_OBJ_IS_TYPE(args[i], &digitalio_digitalinout_type)) {
+ nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_TypeError,
+ "Expected a %q", digitalio_digitalinout_type.name));
+ }
+ }
gamepad_init(n_args, args);
return MP_OBJ_FROM_PTR(gamepad_singleton);
}