struct filter_expr *n = (struct filter_expr *) __filter_new_node(
F_NODE_EXPR, sizeof(struct filter_expr));
+ if (!n)
+ return NULL;
+
n->type = type;
+
switch (type) {
case F_EXPR_AND:
case F_EXPR_OR:
n->right = right;
break;
}
+
return (struct filter_node *) n;
}
struct filter_param *n = (struct filter_param *) __filter_new_node(
F_NODE_PARAM,
sizeof(struct filter_param));
+ if (!n)
+ return NULL;
+
n->type = type;
n->holder = holder;
INIT_LIST_HEAD(&n->pr_params);
- if (param_set_data(n, type, data) != 0)
+ if (param_set_data(n, type, data) != 0) {
+ filter_free_param(n);
return NULL;
+ }
if (holder == F_HOLDER_COLUMN) {
n->holder_name = strdup((char *) data);
struct libscols_line *ln,
struct libscols_counter *ct)
{
- unsigned long long num;
-
+ unsigned long long num = 0;
if (ct->func == SCOLS_COUNTER_COUNT) {
ct->result++;
rc = fetch_holder_data(fltr, ct->param, ln);
if (rc)
return rc;
- }
- if (ct->param->empty)
- return -EINVAL;
- num = ct->param->val.num;
+ if (ct->param->empty)
+ return -EINVAL;
+
+ num = ct->param->val.num;
+ }
switch (ct->func) {
case SCOLS_COUNTER_MAX:
if (fltr->errmsg)
free(fltr->errmsg);
+
fltr->errmsg = strdup(msg);
+ if (!fltr->errmsg)
+ return;
p = strstr(fltr->errmsg, "T_");
if (p) {
size_t sz = strlen(fltr->errmsg);
memmove(p, p + 2, sz - 1 - (p - fltr->errmsg));
}
-
- if (!fltr->errmsg)
- return;
}
errno = EINVAL;
}