summaryrefslogtreecommitdiff
path: root/libinterp
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2009-02-02 10:36:32 +0000
committerCharles.Forsyth <devnull@localhost>2009-02-02 10:36:32 +0000
commita6e29a60e56f492175fa2f70df61dbdaaff98b2a (patch)
tree5ea7ca7a9e9453a5f02b7a92e486dfb17f0e2664 /libinterp
parent857aba0441b20ad666243e0a21fa48ebd264008f (diff)
20090102-1036
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;