diff options
Diffstat (limited to 'appl/cmd/limbo/stubs.b')
| -rw-r--r-- | appl/cmd/limbo/stubs.b | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/appl/cmd/limbo/stubs.b b/appl/cmd/limbo/stubs.b index cafd6ff7..28b92a13 100644 --- a/appl/cmd/limbo/stubs.b +++ b/appl/cmd/limbo/stubs.b @@ -142,7 +142,7 @@ modcode(globals: ref Decl) print("\nvoid\n%sinit(void)\n{\n", emitcode); else{ print("\nvoid\n%smodinit(void)\n{\n", emitcode); - print("\tbuiltinmod(\"$%s\", %smodtab);\n", emitcode, emitcode); + print("\tbuiltinmod(\"$%s\", %smodtab, %smodlen);\n", emitcode, emitcode, emitcode); } for(id = d.ty.ids; id != nil; id = id.next) if(id.store == Dtype && id.ty.kind == Tadt){ @@ -173,8 +173,10 @@ modcode(globals: ref Decl) print("\nvoid\n%s_%s(void *fp)\n{\n\tF_%s_%s *f = fp;\n", id.dot.sym.name, id.sym.name, id.dot.sym.name, id.sym.name); - if(id.ty.tof != tnone && tattr[id.ty.tof.kind].isptr) - print("\n\tdestroy(*f->ret);\n\t*f->ret = H;\n"); + if(id.ty.tof != tnone && tattr[id.ty.tof.kind].isptr){ + print("\tvoid *r;\n"); + print("\n\tr = *f->ret;\n\t*f->ret = H;\n\tdestroy(r);\n"); + } print("}\n"); } |
