fix: all functions have declarations (-Wmissing-prototypes -Wold-style-definition)
[lttng-ust.git] / liblttng-ust / lttng-bytecode.c
index 3fe50c36e707599d79b6e13b41de4fe5444e0bde..67fb1a0677d0d14c4ebfa910971e59cf3dbca53a 100644 (file)
@@ -244,9 +244,23 @@ int apply_field_reloc(const struct lttng_ust_event_desc *event_desc,
                        op->op = BYTECODE_OP_LOAD_FIELD_REF_S64;
                        break;
                case lttng_ust_type_array:
+               {
+                       struct lttng_ust_type_array *array = (struct lttng_ust_type_array *) field->type;
+
+                       if (array->encoding == lttng_ust_string_encoding_none)
+                               return -EINVAL;
+                       op->op = BYTECODE_OP_LOAD_FIELD_REF_SEQUENCE;
+                       break;
+               }
                case lttng_ust_type_sequence:
+               {
+                       struct lttng_ust_type_sequence *sequence = (struct lttng_ust_type_sequence *) field->type;
+
+                       if (sequence->encoding == lttng_ust_string_encoding_none)
+                               return -EINVAL;
                        op->op = BYTECODE_OP_LOAD_FIELD_REF_SEQUENCE;
                        break;
+               }
                case lttng_ust_type_string:
                        op->op = BYTECODE_OP_LOAD_FIELD_REF_STRING;
                        break;
@@ -316,10 +330,26 @@ int apply_context_reloc(struct bytecode_runtime *runtime,
                case lttng_ust_type_enum:
                        op->op = BYTECODE_OP_GET_CONTEXT_REF_S64;
                        break;
-                       /* Sequence and array supported as string */
-               case lttng_ust_type_string:
+                       /* Sequence and array supported only as string */
                case lttng_ust_type_array:
+               {
+                       struct lttng_ust_type_array *array = (struct lttng_ust_type_array *) ctx_field->event_field->type;
+
+                       if (array->encoding == lttng_ust_string_encoding_none)
+                               return -EINVAL;
+                       op->op = BYTECODE_OP_GET_CONTEXT_REF_STRING;
+                       break;
+               }
                case lttng_ust_type_sequence:
+               {
+                       struct lttng_ust_type_sequence *sequence = (struct lttng_ust_type_sequence *) ctx_field->event_field->type;
+
+                       if (sequence->encoding == lttng_ust_string_encoding_none)
+                               return -EINVAL;
+                       op->op = BYTECODE_OP_GET_CONTEXT_REF_STRING;
+                       break;
+               }
+               case lttng_ust_type_string:
                        op->op = BYTECODE_OP_GET_CONTEXT_REF_STRING;
                        break;
                case lttng_ust_type_float:
@@ -547,16 +577,6 @@ void lttng_enabler_link_bytecode(struct lttng_ust_event_desc *event_desc,
        }
 }
 
-/*
- * We own the bytecode if we return success.
- */
-int lttng_filter_enabler_attach_bytecode(struct lttng_enabler *enabler,
-               struct lttng_ust_bytecode_node *bytecode)
-{
-       cds_list_add(&bytecode->node, &enabler->filter_bytecode_head);
-       return 0;
-}
-
 static
 void free_filter_runtime(struct cds_list_head *bytecode_runtime_head)
 {
This page took 0.023698 seconds and 4 git commands to generate.