summaryrefslogtreecommitdiff
path: root/libinterp
diff options
context:
space:
mode:
Diffstat (limited to 'libinterp')
-rw-r--r--libinterp/NOTICE2
-rw-r--r--libinterp/xec.c14
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;