$(CC) $(CFLAGS) -c variable.c
$(AR) r libinterp.a *.o
@rm -f *.o
- #$(CC) $(CFLAGS) shell.c *.o -o shell #-L. -l interp
+ #$(CC) $(CFLAGS) shell.c *.o -o shell
int ifunc_while(interpreter *it)
{
- //int c = igetarg_integer(it, 0);
+ int c = igetarg_integer(it, 0);
ipop(it);
int nidx = (int)ipop(it);
- //if (c != 0) {
+ if (c != 0) {
//ipush(it, (void *)nidx);
it->lnidx = nidx - 1;
- //} else {
- // c++;
- //}
+ }
ipush(it, 0);
return 0;
}
if (it->ret != 0) {
it->ret->valtype = v->valtype;
it->ret->value = v->value;
- it->ret->svalue = v->svalue;
+ char *s = it->ret->svalue;
+ if (s != 0 && s != str_undef)
+ free(s);
+ it->ret->svalue = strclone(v->svalue);
it->ret = 0;
}
}
{
for (unsigned int i = 0; i < MAX_VARS; i++) {
if (it->vars[i].used == 1) {
- char *s = it->vars[i].svalue;
- if (s != 0 && s != str_undef && s != str_func)
- free(s);
+ //char *s = it->vars[i].svalue;
+ //if (s != 0 && s != str_undef && s != str_func)
+ // free(s);
free(it->vnames[i]);
}
}