uint8_t *p; int k;
if ((rec.data = malloc(rec.len)) == 0)
return rec;
+
for (p=rec.data, k=rec.len; k; k--) {
if ((i = get_hexbyte()) < 0)
break;
sum += i;
*p++ = i;
}
+
if (k) {
free(rec.data); rec.data = 0;
return rec;
}
}
- if ((i = get_hexbyte()) < 0) /* Check sum */
- return rec;
- sum += i;
- if (sum) {
- free(rec.data); rec.data = 0;
- rec.status = IHX_CHKSUMERR;
- } else
- rec.status = IHX_OK;
+
+ i = get_hexbyte(); /* Check sum */
+
+ if (i >= 0) {
+ sum += i;
+ if (sum == 0)
+ rec.status = IHX_OK;
+ else
+ rec.status = IHX_CHKSUMERR;
+ }
+
+ if (rec.status != IHX_OK) {
+ free(rec.data);
+ rec.data = 0;
+ }
return rec;
}
} else
done = true;
+
+ free(rec.data);
+ rec.data = 0;
+
}
switch (rec.status) {