return ret;
}
+static GU_PRINTF(2, 3) char * xcasprintf(size_t *count, const char *fmt, ...)
+{
+ int status;
+ va_list va;
+ char *ret;
+
+ va_start(va, fmt);
+ status = vasprintf(&ret, fmt, va);
+ if (status < 0)
+ die_perr("asprintf");
+ va_end(va);
+
+ *count = status;
+ return ret;
+}
+
static void check_chip_index(unsigned int index)
{
if (index >= globals.test_ctx.num_chips)
static void test_load_module(struct gu_chip_descr *descr)
{
char *modarg, *tmp_modarg;
+ size_t modarg_len, count;
char **line_sizes;
- size_t modarg_len;
unsigned int i;
int status;
modarg_len = strlen("gpio_mockup_ranges=");
for (i = 0; i < descr->num_chips; i++) {
- status = asprintf(&line_sizes[i],
- "-1,%u,", descr->num_lines[i]);
- if (status < 0)
- die_perr("asprintf");
-
- modarg_len += status;
+ line_sizes[i] = xcasprintf(&count, "-1,%u,",
+ descr->num_lines[i]);
+ modarg_len += count;
}
modarg = xzalloc(modarg_len + 1);