@@ -24,6 +24,7 @@ import (
24
24
"strconv"
25
25
"strings"
26
26
27
+ "fortio.org/safecast"
27
28
f "github.com/arduino/arduino-cli/internal/algorithms"
28
29
"github.com/arduino/arduino-cli/internal/arduino/builder/cpp"
29
30
"github.com/arduino/arduino-cli/internal/i18n"
@@ -297,8 +298,12 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
297
298
if segment .Address < initialAddress {
298
299
initialAddress = segment .Address
299
300
}
300
- if segment .Address + uint32 (len (segment .Data )) > lastAddress {
301
- lastAddress = segment .Address + uint32 (len (segment .Data ))
301
+ lenData , err := safecast.Convert [uint32 ](len (segment .Data ))
302
+ if err != nil {
303
+ return err
304
+ }
305
+ if segment .Address + lenData > lastAddress {
306
+ lastAddress = segment .Address + lenData
302
307
}
303
308
}
304
309
for _ , segment := range memSketch .GetDataSegments () {
@@ -308,8 +313,12 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
308
313
if segment .Address < initialAddress {
309
314
initialAddress = segment .Address
310
315
}
311
- if segment .Address + uint32 (len (segment .Data )) > lastAddress {
312
- lastAddress = segment .Address + uint32 (len (segment .Data ))
316
+ lenData , err := safecast.Convert [uint32 ](len (segment .Data ))
317
+ if err != nil {
318
+ return err
319
+ }
320
+ if segment .Address + lenData > lastAddress {
321
+ lastAddress = segment .Address + lenData
313
322
}
314
323
}
315
324
@@ -323,7 +332,11 @@ func merge(builtSketchPath, bootloaderPath, mergedSketchPath *paths.Path, maximu
323
332
// Write out a .bin if the addresses doesn't go too far away from origin
324
333
// (and consequently produce a very large bin)
325
334
size := lastAddress - initialAddress
326
- if size > uint32 (maximumBinSize ) {
335
+ maximumBinSizeUint32 , err := safecast.Convert [uint32 ](maximumBinSize )
336
+ if err != nil {
337
+ return nil
338
+ }
339
+ if size > maximumBinSizeUint32 {
327
340
return nil
328
341
}
329
342
mergedSketchPathBin := paths .New (strings .TrimSuffix (mergedSketchPath .String (), ".hex" ) + ".bin" )
0 commit comments