summaryrefslogtreecommitdiff
path: root/shared-bindings/ipaddress/__init__.c
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2020-08-11 14:50:37 -0700
committerScott Shawcroft <scott@tannewt.org>2020-08-19 14:22:13 -0700
commit7bdd243bf6f3cd84ddfd9cf6f35a2d6d8a6a415f (patch)
tree5f5e4b98d6ffa479ecd1f032da01cc999afe3732 /shared-bindings/ipaddress/__init__.c
parent3860991111511a9e4a60ea24f208b8de8f801ce7 (diff)
Ping works!
Diffstat (limited to 'shared-bindings/ipaddress/__init__.c')
-rw-r--r--shared-bindings/ipaddress/__init__.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/shared-bindings/ipaddress/__init__.c b/shared-bindings/ipaddress/__init__.c
index b88b3afbb..1c0ac9153 100644
--- a/shared-bindings/ipaddress/__init__.c
+++ b/shared-bindings/ipaddress/__init__.c
@@ -43,8 +43,8 @@
//|
STATIC mp_obj_t ipaddress_ip_address(mp_obj_t ip_in) {
- mp_int_t value;
- if (mp_obj_get_int_maybe(ip_in, &value)) {
+ uint32_t value;
+ if (mp_obj_get_int_maybe(ip_in, (mp_int_t*) &value)) {
// We're done.
} else if (MP_OBJ_IS_STR(ip_in)) {
GET_STR_DATA_LEN(ip_in, str_data, str_len);
@@ -63,11 +63,12 @@ STATIC mp_obj_t ipaddress_ip_address(mp_obj_t ip_in) {
}
size_t last_period = 0;
+ value = 0;
for (size_t i = 0; i < 4; i++) {
mp_obj_t octet = mp_parse_num_integer((const char*) str_data + last_period, period_index[i] - last_period, 10, NULL);
last_period = period_index[i] + 1;
- value |= MP_OBJ_SMALL_INT_VALUE(octet) << (24 - i * 8);
-
+ mp_int_t int_octet = MP_OBJ_SMALL_INT_VALUE(octet);
+ value |= int_octet << (i * 8);
}
} else {
mp_raise_ValueError(translate("Only raw int supported for ip."));