Skip to content

Commit 3a431fb

Browse files
committed
esp8266/modnetwork: Make sure to intern string passed to .config("param").
This is the proper fix for micropython#3442.
1 parent 8175f16 commit 3a431fb

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

ports/esp8266/modnetwork.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -402,30 +402,30 @@ STATIC mp_obj_t esp_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs
402402

403403
mp_obj_t val;
404404

405-
#define QS(x) (uintptr_t)MP_OBJ_NEW_QSTR(x)
406-
switch ((uintptr_t)args[1]) {
407-
case QS(MP_QSTR_mac): {
405+
qstr key = mp_obj_str_get_qstr(args[1]);
406+
switch (key) {
407+
case MP_QSTR_mac: {
408408
uint8_t mac[6];
409409
wifi_get_macaddr(self->if_id, mac);
410410
return mp_obj_new_bytes(mac, sizeof(mac));
411411
}
412-
case QS(MP_QSTR_essid):
412+
case MP_QSTR_essid:
413413
req_if = SOFTAP_IF;
414414
val = mp_obj_new_str((char*)cfg.ap.ssid, cfg.ap.ssid_len);
415415
break;
416-
case QS(MP_QSTR_hidden):
416+
case MP_QSTR_hidden:
417417
req_if = SOFTAP_IF;
418418
val = mp_obj_new_bool(cfg.ap.ssid_hidden);
419419
break;
420-
case QS(MP_QSTR_authmode):
420+
case MP_QSTR_authmode:
421421
req_if = SOFTAP_IF;
422422
val = MP_OBJ_NEW_SMALL_INT(cfg.ap.authmode);
423423
break;
424-
case QS(MP_QSTR_channel):
424+
case MP_QSTR_channel:
425425
req_if = SOFTAP_IF;
426426
val = MP_OBJ_NEW_SMALL_INT(cfg.ap.channel);
427427
break;
428-
case QS(MP_QSTR_dhcp_hostname): {
428+
case MP_QSTR_dhcp_hostname: {
429429
req_if = STATION_IF;
430430
char* s = wifi_station_get_hostname();
431431
val = mp_obj_new_str(s, strlen(s));
@@ -434,7 +434,6 @@ STATIC mp_obj_t esp_config(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs
434434
default:
435435
goto unknown;
436436
}
437-
#undef QS
438437

439438
// We post-check interface requirements to save on code size
440439
if (req_if >= 0) {

0 commit comments

Comments
 (0)