Skip to content

Commit dd6bb5b

Browse files
authored
cgen: fix dump(ptr_to_fixed_array_value) - it now returns the argument directly (thanks @tankf33der) (#25764)
1 parent ca7bca8 commit dd6bb5b

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

vlib/v/gen/c/dumpexpr.v

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -239,23 +239,18 @@ fn (mut g Gen) dump_expr_definitions() {
239239
dump_fns.writeln('\tstrings__Builder_write_string(&sb, value);')
240240
dump_fns.writeln("\tstrings__Builder_write_rune(&sb, '\\n');")
241241
surrounder.builder_write_afters(mut dump_fns)
242-
if is_fixed_arr_ret {
242+
if is_fixed_arr_ret && !is_ptr {
243243
tmp_var := g.new_tmp_var()
244244
init_str := if dump_sym.is_empty_struct_array() {
245245
'{E_STRUCT}'
246246
} else {
247247
'{0}'
248248
}
249-
if typ.is_ptr() {
250-
dump_fns.writeln('\t${str_dumparg_ret_type} ${tmp_var} = HEAP(${g.styp(typ.set_nr_muls(0))}, ${init_str});')
251-
dump_fns.writeln('\tmemcpy(${tmp_var}->ret_arr, dump_arg, sizeof(${str_dumparg_type}));')
252-
} else {
253-
dump_fns.writeln('\t${str_dumparg_ret_type} ${tmp_var} = ${init_str};')
254-
dump_fns.writeln('\tmemcpy(${tmp_var}.ret_arr, dump_arg, sizeof(${str_dumparg_type}));')
255-
}
249+
dump_fns.writeln('\t${str_dumparg_ret_type} ${tmp_var} = ${init_str};')
250+
dump_fns.writeln('\tmemcpy(${tmp_var}.ret_arr, dump_arg, sizeof(${str_dumparg_type}));')
256251
dump_fns.writeln('\treturn ${tmp_var};')
257252
} else {
258-
dump_fns.writeln('\treturn dump_arg;')
253+
dump_fns.writeln('\treturn dump_arg; /* ${str_dumparg_type} */')
259254
}
260255
dump_fns.writeln('}')
261256
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
_v_Array_fixed_u8_2* _v_dump_expr_Array_fixed_u8_2__ptr(string fpath, int line, string sexpr, Array_fixed_u8_2* dump_arg) {
2+
return dump_arg; /* Array_fixed_u8_2* */
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
fn main() {
2+
a := &[2]u8{}
3+
dump(a)
4+
println(a)
5+
assert a.len == 2
6+
7+
_ := &[2]u8{}
8+
assert true
9+
}

0 commit comments

Comments
 (0)