Skip to content

Commit 302ad40

Browse files
committed
Revert "alloca seems buggy on M4"
This reverts commit 4b1e9d8.
1 parent 5de29ac commit 302ad40

File tree

2 files changed

+3
-4
lines changed

2 files changed

+3
-4
lines changed

extmod/modure.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ STATIC mp_obj_t re_split(size_t n_args, const mp_obj_t *args) {
144144
}
145145

146146
mp_obj_t retval = mp_obj_new_list(0, NULL);
147-
const char* caps[caps_num];
147+
const char **caps = alloca(caps_num * sizeof(char*));
148148
while (true) {
149149
// cast is a workaround for a bug in msvc: it treats const char** as a const pointer instead of a pointer to pointer to const char
150150
memset((char**)caps, 0, caps_num * sizeof(char*));

py/runtime.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,10 +1428,9 @@ mp_obj_t mp_import_from(mp_obj_t module, qstr name) {
14281428
mp_load_method_maybe(module, MP_QSTR___name__, dest);
14291429
size_t pkg_name_len;
14301430
const char *pkg_name = mp_obj_str_get_data(dest[0], &pkg_name_len);
1431+
14311432
const uint dot_name_len = pkg_name_len + 1 + qstr_len(name);
1432-
// Previously dot_name was created using alloca(), but that caused run-time crashes on M4 due to
1433-
// stack corruption (compiler bug, it appears), so use an array instead.
1434-
char dot_name[dot_name_len];
1433+
char *dot_name = alloca(dot_name_len);
14351434
memcpy(dot_name, pkg_name, pkg_name_len);
14361435
dot_name[pkg_name_len] = '.';
14371436
memcpy(dot_name + pkg_name_len + 1, qstr_str(name), qstr_len(name));

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy