37 |
#include <unistd.h> |
#include <unistd.h> |
38 |
/* EX_NOINPUT, EX_USAGE */ |
/* EX_NOINPUT, EX_USAGE */ |
39 |
#include <sysexits.h> |
#include <sysexits.h> |
40 |
|
/* assert */ |
41 |
|
#include <assert.h> |
42 |
|
|
43 |
#ifdef __linux__ |
#ifdef __linux__ |
44 |
/* mtrace, muntrace */ |
/* mtrace, muntrace */ |
123 |
stackitem *nitem= malloc(sizeof(stackitem)); |
stackitem *nitem= malloc(sizeof(stackitem)); |
124 |
|
|
125 |
nval->content.ptr= NULL; |
nval->content.ptr= NULL; |
126 |
|
nval->type= integer; |
127 |
|
|
128 |
nitem->item= nval; |
nitem->item= nval; |
129 |
nitem->next= env->gc_ref; |
nitem->next= env->gc_ref; |
261 |
value *new_value= new_val(env); |
value *new_value= new_val(env); |
262 |
|
|
263 |
new_value->content.c= malloc(sizeof(cons)); |
new_value->content.c= malloc(sizeof(cons)); |
264 |
|
assert(new_value->content.c!=NULL); |
265 |
new_value->type= tcons; |
new_value->type= tcons; |
266 |
CAR(new_value)= val; |
CAR(new_value)= val; |
267 |
CDR(new_value)= env->head; |
CDR(new_value)= env->head; |
1267 |
|
|
1268 |
protect(old_value); |
protect(old_value); |
1269 |
new_value= new_val(env); |
new_value= new_val(env); |
|
protect(new_value); |
|
1270 |
new_value->type= old_value->type; |
new_value->type= old_value->type; |
1271 |
|
|
1272 |
switch(old_value->type){ |
switch(old_value->type){ |
1281 |
strdup((char *)(old_value->content.ptr)); |
strdup((char *)(old_value->content.ptr)); |
1282 |
break; |
break; |
1283 |
case tcons: |
case tcons: |
|
new_value= NULL; |
|
1284 |
|
|
1285 |
new_value->content.c= malloc(sizeof(cons)); |
new_value->content.c= malloc(sizeof(cons)); |
1286 |
|
assert(new_value->content.c!=NULL); |
1287 |
|
|
1288 |
CAR(new_value)= copy_val(env, CAR(old_value)); /* recurse */ |
CAR(new_value)= copy_val(env, CAR(old_value)); /* recurse */ |
1289 |
CDR(new_value)= copy_val(env, CDR(old_value)); /* recurse */ |
CDR(new_value)= copy_val(env, CDR(old_value)); /* recurse */ |
1290 |
break; |
break; |
1291 |
} |
} |
1292 |
|
|
1293 |
unprotect(old_value); unprotect(new_value); |
unprotect(old_value); |
1294 |
|
|
1295 |
return new_value; |
return new_value; |
1296 |
} |
} |