diff options
Diffstat (limited to 'libinterp')
| -rw-r--r-- | libinterp/NOTICE | 2 | ||||
| -rw-r--r-- | libinterp/xec.c | 14 |
2 files changed, 11 insertions, 5 deletions
diff --git a/libinterp/NOTICE b/libinterp/NOTICE index 9a6619b4..1986db19 100644 --- a/libinterp/NOTICE +++ b/libinterp/NOTICE @@ -1,6 +1,6 @@ Copyright © 1995-1999 Lucent Technologies Inc. Portions Copyright © 1997-2000 Vita Nuova Limited -Portions Copyright © 2000-2007 Vita Nuova Holdings Limited +Portions Copyright © 2000-2009 Vita Nuova Holdings Limited This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (`LGPL') as published by diff --git a/libinterp/xec.c b/libinterp/xec.c index 9f6792e9..29778c0b 100644 --- a/libinterp/xec.c +++ b/libinterp/xec.c @@ -455,8 +455,8 @@ cnewc(Type *t, void (*mover)(void), int len) h = heap(&Tchannel); c = H2D(Channel*, h); - c->send = (Progq*)malloc(sizeof(Progq)); - c->recv = (Progq*)malloc(sizeof(Progq)); + c->send = malloc(sizeof(Progq)); + c->recv = malloc(sizeof(Progq)); if(c->send == nil || c->recv == nil){ free(c->send); free(c->recv); @@ -722,6 +722,7 @@ OP(iload) Import *ldt; Module *m; Modlink *ml, **mp, *t; + Heap *h; n = string2c(S(s)); m = R.M->m; @@ -737,7 +738,9 @@ OP(iload) ml = linkmod(m, ldt, 0); if(ml != H) { ml->MP = R.M->MP; - D2H(ml->MP)->ref++; + h = D2H(ml->MP); + h->ref++; + Setmark(h); } } else { @@ -1560,9 +1563,12 @@ OP(cvtxf) OP(self) { Modlink *ml, **mp, *t; + Heap *h; ml = R.M; - D2H(ml)->ref++; + h = D2H(ml); + h->ref++; + Setmark(h); mp = R.d; t = *mp; *mp = ml; |
