summaryrefslogtreecommitdiff
path: root/appl/cmd/limbo/stubs.b
diff options
context:
space:
mode:
Diffstat (limited to 'appl/cmd/limbo/stubs.b')
-rw-r--r--appl/cmd/limbo/stubs.b8
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");
}