Skip to content

Commit de60afa

Browse files
committed
Fixed some error check.
`execSizeReceipe` now returns a tuple instead of modifying parameters. This change also showed that eepromSize is never used. Signed-off-by: Cristian Maglie <[email protected]>
1 parent 6c6ba05 commit de60afa

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

src/arduino.cc/builder/phases/sizer.go

+27-20
Original file line numberDiff line numberDiff line change
@@ -73,18 +73,16 @@ func checkSize(buildProperties properties.Map, verbose bool, warningsLevel strin
7373
if err != nil {
7474
return err
7575
}
76-
maxDataSize := -1
7776

77+
maxDataSize := -1
7878
if maxDataSizeString != "" {
7979
maxDataSize, err = strconv.Atoi(maxDataSizeString)
8080
if err != nil {
8181
return err
8282
}
8383
}
8484

85-
textSize, dataSize, eepromSize := -1, -1, -1
86-
87-
err = execSizeReceipe(properties, logger, &textSize, &dataSize, &eepromSize)
85+
textSize, dataSize, _, err := execSizeReceipe(properties, logger)
8886
if err != nil {
8987
logger.Println(constants.LOG_LEVEL_WARN, constants.MSG_SIZER_ERROR_NO_RULE)
9088
return nil
@@ -122,12 +120,11 @@ func checkSize(buildProperties properties.Map, verbose bool, warningsLevel strin
122120
return nil
123121
}
124122

125-
func execSizeReceipe(properties properties.Map, logger i18n.Logger, textSize *int, dataSize *int, eepromSize *int) error {
126-
123+
func execSizeReceipe(properties properties.Map, logger i18n.Logger) (textSize int, dataSize int, eepromSize int, resErr error) {
127124
out, err := builder_utils.ExecRecipe(properties, constants.RECIPE_SIZE_PATTERN, false, false, false, logger)
128-
129125
if err != nil {
130-
return errors.New("")
126+
resErr = errors.New("Error while determining sketch size: " + err.Error())
127+
return
131128
}
132129

133130
// force multiline match prepending "(?m)" to the actual regexp
@@ -136,46 +133,56 @@ func execSizeReceipe(properties properties.Map, logger i18n.Logger, textSize *in
136133
if len(properties[constants.RECIPE_SIZE_REGEXP]) > 0 {
137134
textRegexp, err := regexp.Compile("(?m)" + properties[constants.RECIPE_SIZE_REGEXP])
138135
if err != nil {
139-
return errors.New("")
136+
resErr = errors.New("Invalid size regexp: " + err.Error())
137+
return
140138
}
141139
result := textRegexp.FindAllSubmatch(out, -1)
142140
for _, b := range result {
143141
for _, c := range b {
144-
res, _ := strconv.Atoi(string(c))
145-
*textSize += res
142+
if res, err := strconv.Atoi(string(c)); err == nil {
143+
textSize += res
144+
}
146145
}
147146
}
148147
} else {
149-
return errors.New("")
148+
resErr = errors.New("Missing size regexp")
149+
return
150150
}
151151

152152
if len(properties[constants.RECIPE_SIZE_REGEXP_DATA]) > 0 {
153153
dataRegexp, err := regexp.Compile("(?m)" + properties[constants.RECIPE_SIZE_REGEXP_DATA])
154154
if err != nil {
155-
return errors.New("")
155+
resErr = errors.New("Invalid data size regexp: " + err.Error())
156+
return
156157
}
157158
result := dataRegexp.FindAllSubmatch(out, -1)
158159
for _, b := range result {
159160
for _, c := range b {
160-
res, _ := strconv.Atoi(string(c))
161-
*dataSize += res
161+
if res, err := strconv.Atoi(string(c)); err == nil {
162+
dataSize += res
163+
}
162164
}
163165
}
166+
} else {
167+
dataSize = -1
164168
}
165169

166170
if len(properties[constants.RECIPE_SIZE_REGEXP_EEPROM]) > 0 {
167171
eepromRegexp, err := regexp.Compile("(?m)" + properties[constants.RECIPE_SIZE_REGEXP_EEPROM])
168172
if err != nil {
169-
return errors.New("")
173+
resErr = errors.New("Invalid eeprom size regexp: " + err.Error())
174+
return
170175
}
171176
result := eepromRegexp.FindAllSubmatch(out, -1)
172177
for _, b := range result {
173178
for _, c := range b {
174-
res, _ := strconv.Atoi(string(c))
175-
*eepromSize += res
179+
if res, err := strconv.Atoi(string(c)); err == nil {
180+
eepromSize += res
181+
}
176182
}
177183
}
184+
} else {
185+
eepromSize = -1
178186
}
179-
180-
return nil
187+
return
181188
}

0 commit comments

Comments
 (0)