rcheckn: rcheck plus freeing allocated memory

This commit is contained in:
Holger Vogt 2020-03-21 11:51:18 +01:00
parent 84ff135e5b
commit ba81e21197
2 changed files with 6 additions and 3 deletions

View File

@ -76,7 +76,10 @@ typedef struct {
#define rcheck(cond, name) if (!(cond)) { \
fprintf(cp_err, "Error: argument out of range for %s\n", name); \
return (NULL); }
#define rcheckn(cond, name, clean) if (!(cond)) { \
fprintf(cp_err, "Error: argument out of range for %s\n", name); \
tfree(clean); \
return (NULL); }
#define cdiv(r1, i1, r2, i2, r3, i3) \
{ \

View File

@ -41,7 +41,7 @@ cx_divide(void *data1, void *data2, short int datatype1, short int datatype2, in
if ((datatype1 == VF_REAL) && (datatype2 == VF_REAL)) {
d = alloc_d(length);
for (i = 0; i < length; i++) {
rcheck(dd2[i] != 0, "divide");
rcheckn(dd2[i] != 0, "divide", d);
d[i] = dd1[i] / dd2[i];
}
return ((void *) d);
@ -60,7 +60,7 @@ cx_divide(void *data1, void *data2, short int datatype1, short int datatype2, in
} else {
c2 = cc2[i];
}
rcheck((realpart(c2) != 0) || (imagpart(c2) != 0), "divide");
rcheckn((realpart(c2) != 0) || (imagpart(c2) != 0), "divide", c);
#define xx5 realpart(c1)
#define xx6 imagpart(c1)
cdiv(xx5, xx6, realpart(c2), imagpart(c2), realpart(c[i]), imagpart(c[i]));