mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
fix a bug
This commit is contained in:
parent
8277895502
commit
62c12981df
@ -120,6 +120,7 @@ void FuncDecl__add_arg(FuncDecl* self, py_Name name);
|
||||
void FuncDecl__add_kwarg(FuncDecl* self, py_Name name, const py_TValue* value);
|
||||
void FuncDecl__add_starred_arg(FuncDecl* self, py_Name name);
|
||||
void FuncDecl__add_starred_kwarg(FuncDecl* self, py_Name name);
|
||||
void FuncDecl__gc_mark(const FuncDecl* self);
|
||||
|
||||
// runtime function
|
||||
typedef struct Function {
|
||||
|
@ -602,6 +602,14 @@ static void mark_object(PyObject* obj) {
|
||||
if(ti->gc_mark) ti->gc_mark(PyObject__userdata(obj));
|
||||
}
|
||||
|
||||
void FuncDecl__gc_mark(const FuncDecl* self) {
|
||||
CodeObject__gc_mark(&self->code);
|
||||
for(int j = 0; j < self->kwargs.length; j++) {
|
||||
FuncDeclKwArg* kw = c11__at(FuncDeclKwArg, &self->kwargs, j);
|
||||
pk__mark_value(&kw->value);
|
||||
}
|
||||
}
|
||||
|
||||
void CodeObject__gc_mark(const CodeObject* self) {
|
||||
for(int i = 0; i < self->consts.length; i++) {
|
||||
py_TValue* p = c11__at(py_TValue, &self->consts, i);
|
||||
@ -609,12 +617,7 @@ void CodeObject__gc_mark(const CodeObject* self) {
|
||||
}
|
||||
for(int i = 0; i < self->func_decls.length; i++) {
|
||||
FuncDecl_ decl = c11__getitem(FuncDecl_, &self->func_decls, i);
|
||||
CodeObject__gc_mark(&decl->code);
|
||||
|
||||
for(int j = 0; j < decl->kwargs.length; j++) {
|
||||
FuncDeclKwArg* kw = c11__at(FuncDeclKwArg, &decl->kwargs, j);
|
||||
pk__mark_value(&kw->value);
|
||||
}
|
||||
FuncDecl__gc_mark(decl);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -685,7 +685,7 @@ py_TValue pk_builtins__register() {
|
||||
static void function__gc_mark(void* ud) {
|
||||
Function* func = ud;
|
||||
if(func->closure) pk__mark_namedict(func->closure);
|
||||
CodeObject__gc_mark(&func->decl->code);
|
||||
FuncDecl__gc_mark(func->decl);
|
||||
}
|
||||
|
||||
static bool function__doc__(int argc, py_Ref argv) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user