]> git.gag.com Git - fw/openocd/blobdiff - src/target/arc_cmd.c
target/arc: fix clang static analyzer warnings
[fw/openocd] / src / target / arc_cmd.c
index 3f6caf7512ccb587f1338f5d2b08eda4248b7597..3475762f4c9389c5b7e7a0d7afb8a450f68adf60 100644 (file)
@@ -163,7 +163,8 @@ static int jim_arc_add_reg_type_flags(Jim_Interp *interp, int argc,
        struct arc_reg_data_type *type = calloc(1, sizeof(*type));
        struct reg_data_type_flags *flags = &type->data_type_flags;
        struct reg_data_type_flags_field *fields = calloc(fields_sz, sizeof(*fields));
-       struct arc_reg_bitfield *bitfields = calloc(fields_sz, sizeof(*type));
+       type->reg_type_flags_field = fields;
+       struct arc_reg_bitfield *bitfields = calloc(fields_sz, sizeof(*bitfields));
        if (!(type && fields && bitfields)) {
                Jim_SetResultFormatted(goi.interp, "Failed to allocate memory.");
                goto fail;
@@ -528,7 +529,8 @@ static int jim_arc_add_reg_type_struct(Jim_Interp *interp, int argc,
        struct arc_reg_data_type *type = calloc(1, sizeof(*type));
        struct reg_data_type_struct *struct_type = &type->data_type_struct;
        struct reg_data_type_struct_field *fields = calloc(fields_sz, sizeof(*fields));
-       struct arc_reg_bitfield *bitfields = calloc(fields_sz, sizeof(*type));
+       type->reg_type_struct_field = fields;
+       struct arc_reg_bitfield *bitfields = calloc(fields_sz, sizeof(*bitfields));
        if (!(type && fields && bitfields)) {
                Jim_SetResultFormatted(goi.interp, "Failed to allocate memory.");
                goto fail;
@@ -789,6 +791,7 @@ static int jim_arc_add_reg(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
        target = get_current_target(ctx);
        if (!target) {
                Jim_SetResultFormatted(goi.interp, "No current target");
+               free_reg_desc(reg);
                return JIM_ERR;
        }