Skip to content

Commit 9169216

Browse files
medvednikovclaude
andcommitted
fix: use T() casts in generic decode functions for type safety
Cast to the generic type T instead of hardcoding u64/i64/f64 casts, which caused type mismatch errors when T is a narrower type. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 55d09a0 commit 9169216

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

decode.v

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,35 +171,35 @@ pub fn (mut d Decoder) decode_integer[T](mut val T) ! {
171171
data := d.buffer
172172
match d.bd {
173173
mp_u8 {
174-
val = data[d.pos]
174+
val = T(data[d.pos])
175175
d.pos++
176176
}
177177
mp_u16 {
178-
val = u64(binary.big_endian_u16(data[d.pos..d.pos + 2]))
178+
val = T(binary.big_endian_u16(data[d.pos..d.pos + 2]))
179179
d.pos += 2
180180
}
181181
mp_u32 {
182-
val = u64(int(binary.big_endian_u32(data[d.pos..d.pos + 4])))
182+
val = T(binary.big_endian_u32(data[d.pos..d.pos + 4]))
183183
d.pos += 4
184184
}
185185
mp_u64 {
186-
val = u64(binary.big_endian_u64(data[d.pos..d.pos + 8]))
186+
val = T(binary.big_endian_u64(data[d.pos..d.pos + 8]))
187187
d.pos += 8
188188
}
189189
mp_i8 {
190-
val = i64(data[d.pos])
190+
val = T(i8(data[d.pos]))
191191
d.pos++
192192
}
193193
mp_i16 {
194-
val = i64(i16(binary.big_endian_u16(data[d.pos..d.pos + 2])))
194+
val = T(i16(binary.big_endian_u16(data[d.pos..d.pos + 2])))
195195
d.pos += 2
196196
}
197197
mp_i32 {
198-
val = i64(i32(binary.big_endian_u32(data[d.pos..d.pos + 4])))
198+
val = T(i32(binary.big_endian_u32(data[d.pos..d.pos + 4])))
199199
d.pos += 4
200200
}
201201
mp_i64 {
202-
val = i64(binary.big_endian_u64(data[d.pos..d.pos + 8]))
202+
val = T(binary.big_endian_u64(data[d.pos..d.pos + 8]))
203203
d.pos += 8
204204
}
205205
else {
@@ -212,11 +212,11 @@ pub fn (mut d Decoder) decode_float[T](mut val T) ! {
212212
data := d.buffer
213213
match d.bd {
214214
mp_f32 {
215-
val = math.f32_from_bits(binary.big_endian_u32(data[1..4]))
215+
val = T(math.f32_from_bits(binary.big_endian_u32(data[1..4])))
216216
d.pos += 4
217217
}
218218
mp_f64 {
219-
val = math.f64_from_bits(binary.big_endian_u64(data[1..8]))
219+
val = T(math.f64_from_bits(binary.big_endian_u64(data[1..8])))
220220
d.pos += 8
221221
}
222222
else {

0 commit comments

Comments
 (0)