From: Ton v. O. <tvo...@us...> - 2006-09-28 13:36:41
|
Update of /cvsroot/easycalc/easycalc/mlib In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv29295 Modified Files: slist.c Log Message: Replaced calls to stack_get_val2() with two calls to stack_get_val() and changed the clean-up in case of error to avoid memory leaks in the original code. Index: slist.c =================================================================== RCS file: /cvsroot/easycalc/easycalc/mlib/slist.c,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** slist.c 25 Sep 2006 23:59:45 -0000 1.35 --- slist.c 28 Sep 2006 13:36:31 -0000 1.36 *************** *** 463,469 **** char *result; ! err = stack_get_val2(stack,&lstx,&lsty,list); if (err) return err; if (!list_real(lstx) || !list_real(lsty) || --- 463,474 ---- char *result; ! err = stack_get_val(stack,&lsty,list); if (err) return err; + err = stack_get_val(stack,&lstx,list); + if (err) { + list_delete(lsty); + return err; + } if (!list_real(lstx) || !list_real(lsty) || *************** *** 871,878 **** return err; ! err = stack_get_val2(stack,&b,&a,list); ! if (err){ list_delete(x); ! return err;} /* the first A coefficient can´t be 0 */ --- 876,890 ---- return err; ! err = stack_get_val(stack,&a,list); ! if (err) { list_delete(x); ! return err; ! } ! err = stack_get_val(stack,&b,list); ! if (err) { ! list_delete(x); ! list_delete(a); ! return err; ! } /* the first A coefficient can´t be 0 */ *************** *** 1021,1028 **** CError err; ! err = stack_get_val2(stack,&lst1,&lst2,list); if (err) return err; ! switch (func->num) { --- 1033,1044 ---- CError err; ! err = stack_get_val(stack,&lst2,list); if (err) return err; ! err = stack_get_val(stack,&lst1,list); ! if (err) { ! list_delete(lst2); ! return err; ! } switch (func->num) { *************** *** 1113,1121 **** return c_syntax; ! for(k=1;k<func->paramcount;k++){ ! err = stack_get_val2(stack,&lst1,&lst2,list); if (err) return err; m=lst1->size; --- 1129,1142 ---- return c_syntax; ! for(k=1;k<func->paramcount && !err;k++){ ! err = stack_get_val(stack,&lst2,list); if (err) return err; + err = stack_get_val(stack,&lst1,list); + if (err) { + list_delete(lst2); + return err; + } m=lst1->size; |