mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-21 14:49:18 +02:00
GC preserving result in C struct constructors.
This commit is contained in:
parent
bd1e861afa
commit
dd8846de76
1 changed files with 4 additions and 1 deletions
|
@ -1111,7 +1111,9 @@
|
||||||
(lp (cdr ls) (+ i 1))))))
|
(lp (cdr ls) (+ i 1))))))
|
||||||
") {\n"
|
") {\n"
|
||||||
" struct " (type-name name) " *r;\n"
|
" struct " (type-name name) " *r;\n"
|
||||||
" sexp res = sexp_alloc_tagged(ctx, sexp_sizeof(cpointer) + sizeof(struct " (type-name name) "), "
|
" sexp_gc_var1(res);\n"
|
||||||
|
" sexp_gc_preserve1(ctx, res);\n"
|
||||||
|
" res = sexp_alloc_tagged(ctx, sexp_sizeof(cpointer) + sizeof(struct " (type-name name) "), "
|
||||||
(type-id-name name)
|
(type-id-name name)
|
||||||
");\n"
|
");\n"
|
||||||
" sexp_cpointer_value(res) = sexp_cpointer_body(res);\n"
|
" sexp_cpointer_value(res) = sexp_cpointer_body(res);\n"
|
||||||
|
@ -1133,6 +1135,7 @@
|
||||||
(number->string i))))
|
(number->string i))))
|
||||||
";\n"))
|
";\n"))
|
||||||
(lp (cdr ls) (+ i 1)))))))
|
(lp (cdr ls) (+ i 1)))))))
|
||||||
|
" sexp_gc_release1(ctx);\n"
|
||||||
" return res;\n"
|
" return res;\n"
|
||||||
"}\n\n")
|
"}\n\n")
|
||||||
(set! *funcs*
|
(set! *funcs*
|
||||||
|
|
Loading…
Add table
Reference in a new issue