aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-03-16 13:01:06 +0000
committergingerBill <bill@gingerbill.org>2023-03-16 13:01:06 +0000
commit49cf0125a936bdc5406ec7dcb0837470992f676c (patch)
tree4cad2b14a8668fb76db89a4bb99e3abfd6614d4c /src/check_expr.cpp
parent0602a16ad66a02e315a71de721885e351b723a2b (diff)
Fix minor memory leak
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 5338c0b67..f27675301 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -6800,14 +6800,21 @@ gb_internal ExprKind check_call_expr(CheckerContext *c, Operand *operand, Ast *c
operand->type = t_invalid;
}
} else {
- gbString str = type_to_string(t);
- defer (gb_string_free(str));
-
operand->mode = Addressing_Invalid;
isize arg_count = args.count;
switch (arg_count) {
- case 0: error(call, "Missing argument in conversion to '%s'", str); break;
- default: error(call, "Too many arguments in conversion to '%s'", str); break;
+ case 0:
+ {
+ gbString str = type_to_string(t);
+ error(call, "Missing argument in conversion to '%s'", str);
+ gb_string_free(str);
+ } break;
+ default:
+ {
+ gbString str = type_to_string(t);
+ error(call, "Too many arguments in conversion to '%s'", str);
+ gb_string_free(str);
+ } break;
case 1: {
Ast *arg = args[0];
if (arg->kind == Ast_FieldValue) {