projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: Add missing free() in spawn_viewer
[lttng-tools.git]
/
src
/
lib
/
lttng-ctl
/
filter
/
filter-visitor-generate-bytecode.c
diff --git
a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c
b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c
index 785c1135ef6b4606bdcb76c960a7611b4b142c28..4dd52d8d0eed988a7c97e88bd5dc80449b0480fb 100644
(file)
--- a/
src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c
+++ b/
src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c
@@
-22,7
+22,8
@@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
-#include "align.h"
+#include <common/align.h>
+
#include "filter-bytecode.h"
#include "filter-ir.h"
#include "filter-ast.h"
#include "filter-bytecode.h"
#include "filter-ir.h"
#include "filter-ast.h"
@@
-222,7
+223,7
@@
int visit_node_load(struct filter_parser_ctx *ctx, struct ir_op *node)
if (!insn)
return -ENOMEM;
insn->op = FILTER_OP_LOAD_S64;
if (!insn)
return -ENOMEM;
insn->op = FILTER_OP_LOAD_S64;
-
*(int64_t *) insn->data = node->u.load.u.num
;
+
memcpy(insn->data, &node->u.load.u.num, sizeof(int64_t))
;
ret = bytecode_push(&ctx->bytecode, insn, 1, insn_len);
free(insn);
return ret;
ret = bytecode_push(&ctx->bytecode, insn, 1, insn_len);
free(insn);
return ret;
@@
-237,7
+238,7
@@
int visit_node_load(struct filter_parser_ctx *ctx, struct ir_op *node)
if (!insn)
return -ENOMEM;
insn->op = FILTER_OP_LOAD_DOUBLE;
if (!insn)
return -ENOMEM;
insn->op = FILTER_OP_LOAD_DOUBLE;
-
*(double *) insn->data = node->u.load.u.flt
;
+
memcpy(insn->data, &node->u.load.u.flt, sizeof(double))
;
ret = bytecode_push(&ctx->bytecode, insn, 1, insn_len);
free(insn);
return ret;
ret = bytecode_push(&ctx->bytecode, insn, 1, insn_len);
free(insn);
return ret;
@@
-263,6
+264,7
@@
int visit_node_load(struct filter_parser_ctx *ctx, struct ir_op *node)
insn->op = FILTER_OP_GET_CONTEXT_REF;
break;
default:
insn->op = FILTER_OP_GET_CONTEXT_REF;
break;
default:
+ free(insn);
return -EINVAL;
}
ref_offset.offset = (uint16_t) -1U;
return -EINVAL;
}
ref_offset.offset = (uint16_t) -1U;
@@
-519,10
+521,19
@@
int recursive_visit_gen_bytecode(struct filter_parser_ctx *ctx,
LTTNG_HIDDEN
void filter_bytecode_free(struct filter_parser_ctx *ctx)
{
LTTNG_HIDDEN
void filter_bytecode_free(struct filter_parser_ctx *ctx)
{
- free(ctx->bytecode);
- ctx->bytecode = NULL;
- free(ctx->bytecode_reloc);
- ctx->bytecode_reloc = NULL;
+ if (!ctx) {
+ return;
+ }
+
+ if (ctx->bytecode) {
+ free(ctx->bytecode);
+ ctx->bytecode = NULL;
+ }
+
+ if (ctx->bytecode_reloc) {
+ free(ctx->bytecode_reloc);
+ ctx->bytecode_reloc = NULL;
+ }
}
LTTNG_HIDDEN
}
LTTNG_HIDDEN
This page took
0.030363 seconds
and
4
git commands to generate.