#include <unistd.h>
#include <string.h>
#include <stdlib.h>
-#include <assert.h>
-#include <errno.h>
#include <inttypes.h>
#include "filter-ast.h"
#include "filter-parser.h"
#include "filter-ir.h"
+#include <common/compat/errno.h>
#include <common/macros.h>
#include <common/string-utils/string-utils.h>
static
enum ir_load_string_type get_literal_string_type(const char *string)
{
- assert(string);
+ LTTNG_ASSERT(string);
if (strutils_is_star_glob_pattern(string)) {
if (strutils_is_star_at_the_end_only_glob_pattern(string)) {
struct filter_node *prev_node;
for (;;) {
- assert(node->type == NODE_EXPRESSION);
+ LTTNG_ASSERT(node->type == NODE_EXPRESSION);
prev_node = node;
node = node->u.expression.prev;
if (!node) {
bracket_node != NULL;
bracket_node = bracket_node->u.expression.next_bracket) {
prev_op = load_exp_op;
+ if (bracket_node->type != NODE_EXPRESSION ||
+ bracket_node->u.expression.type != AST_EXP_CONSTANT) {
+ fprintf(stderr, "[error] Expecting constant index in array expression\n");
+ goto error;
+ }
load_exp_op = calloc(sizeof(struct ir_load_expression_op), 1);
if (!load_exp_op)
goto error;
return 0;
}
-LTTNG_HIDDEN
void filter_ir_free(struct filter_parser_ctx *ctx)
{
filter_free_ir_recursive(ctx->ir_root);
ctx->ir_root = NULL;
}
-LTTNG_HIDDEN
int filter_visitor_ir_generate(struct filter_parser_ctx *ctx)
{
struct ir_op *op;