Skip to content

Commit 5bf57e5

Browse files
committed
Check errors from Close() calls on success paths
1 parent 8c421a8 commit 5bf57e5

5 files changed

Lines changed: 61 additions & 21 deletions

File tree

cmd/go-yaml/event.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,9 @@ func processEventsDecode(reader io.Reader, profuse, compact bool) error {
198198
enc.Close()
199199
return fmt.Errorf("failed to dump compact event info: %w", err)
200200
}
201-
enc.Close()
201+
if err := enc.Close(); err != nil {
202+
return fmt.Errorf("failed to close dumper: %w", err)
203+
}
202204
fmt.Print(buf.String())
203205
}
204206
} else {
@@ -215,7 +217,9 @@ func processEventsDecode(reader io.Reader, profuse, compact bool) error {
215217
enc.Close()
216218
return fmt.Errorf("failed to dump event info: %w", err)
217219
}
218-
enc.Close()
220+
if err := enc.Close(); err != nil {
221+
return fmt.Errorf("failed to close dumper: %w", err)
222+
}
219223
fmt.Print(buf.String())
220224
}
221225
}
@@ -352,7 +356,9 @@ func processEventsUnmarshal(reader io.Reader, profuse, compact bool) error {
352356
enc.Close()
353357
return fmt.Errorf("failed to dump compact event info: %w", err)
354358
}
355-
enc.Close()
359+
if err := enc.Close(); err != nil {
360+
return fmt.Errorf("failed to close dumper: %w", err)
361+
}
356362
fmt.Print(buf.String())
357363
}
358364
} else {
@@ -369,7 +375,9 @@ func processEventsUnmarshal(reader io.Reader, profuse, compact bool) error {
369375
enc.Close()
370376
return fmt.Errorf("failed to dump event info: %w", err)
371377
}
372-
enc.Close()
378+
if err := enc.Close(); err != nil {
379+
return fmt.Errorf("failed to close dumper: %w", err)
380+
}
373381
fmt.Print(buf.String())
374382
}
375383
}

cmd/go-yaml/json.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func ProcessJSON(reader io.Reader, pretty, unmarshalMode, decodeMode bool, opts
2424
return processJSONDecode(reader, pretty, nil) // Decode API doesn't support options
2525
}
2626
// Default: use Load API with options
27-
return processJSONLoad(reader, pretty, opts)
27+
return processJSONLoad(reader, pretty, opts...)
2828
}
2929

3030
// processJSONLoad uses Loader.Load for YAML processing with options

cmd/go-yaml/main.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,9 @@ func main() {
589589
if err := enc.Dump(output); err != nil {
590590
log.Fatal("Failed to dump node info:", err)
591591
}
592-
enc.Close()
592+
if err := enc.Close(); err != nil {
593+
log.Fatal("Failed to close dumper:", err)
594+
}
593595
fmt.Print(buf.String())
594596
}
595597
}
@@ -654,7 +656,9 @@ func ProcessNodeUnmarshal(reader io.Reader, profuse bool) error {
654656
enc.Close()
655657
return fmt.Errorf("failed to dump node info: %w", err)
656658
}
657-
enc.Close()
659+
if err := enc.Close(); err != nil {
660+
return fmt.Errorf("failed to close dumper: %w", err)
661+
}
658662
fmt.Print(buf.String())
659663

660664
return nil

cmd/go-yaml/token.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,9 @@ func processTokensDecode(profuse, compact bool) error {
132132
dumper.Close()
133133
return fmt.Errorf("failed to dump compact token info: %w", err)
134134
}
135-
dumper.Close()
135+
if err := dumper.Close(); err != nil {
136+
return fmt.Errorf("failed to close dumper: %w", err)
137+
}
136138
fmt.Print(buf.String())
137139
}
138140
} else {
@@ -149,7 +151,9 @@ func processTokensDecode(profuse, compact bool) error {
149151
dumper.Close()
150152
return fmt.Errorf("failed to dump token info: %w", err)
151153
}
152-
dumper.Close()
154+
if err := dumper.Close(); err != nil {
155+
return fmt.Errorf("failed to close dumper: %w", err)
156+
}
153157
fmt.Print(buf.String())
154158
}
155159
}
@@ -230,7 +234,9 @@ func processTokensWithParser(reader io.Reader, profuse, compact bool) error {
230234
dumper.Close()
231235
return fmt.Errorf("failed to dump compact token info: %w", err)
232236
}
233-
dumper.Close()
237+
if err := dumper.Close(); err != nil {
238+
return fmt.Errorf("failed to close dumper: %w", err)
239+
}
234240
fmt.Print(buf.String())
235241
} else {
236242
// For non-compact mode, output each token as a separate mapping
@@ -243,7 +249,9 @@ func processTokensWithParser(reader io.Reader, profuse, compact bool) error {
243249
dumper.Close()
244250
return fmt.Errorf("failed to dump token info: %w", err)
245251
}
246-
dumper.Close()
252+
if err := dumper.Close(); err != nil {
253+
return fmt.Errorf("failed to close dumper: %w", err)
254+
}
247255
fmt.Print(buf.String())
248256
}
249257
}
@@ -346,7 +354,9 @@ func processTokensUnmarshal(reader io.Reader, profuse, compact bool) error {
346354
dumper.Close()
347355
return fmt.Errorf("failed to dump compact token info: %w", err)
348356
}
349-
dumper.Close()
357+
if err := dumper.Close(); err != nil {
358+
return fmt.Errorf("failed to close dumper: %w", err)
359+
}
350360
fmt.Print(buf.String())
351361
}
352362
} else {
@@ -363,7 +373,9 @@ func processTokensUnmarshal(reader io.Reader, profuse, compact bool) error {
363373
dumper.Close()
364374
return fmt.Errorf("failed to dump token info: %w", err)
365375
}
366-
dumper.Close()
376+
if err := dumper.Close(); err != nil {
377+
return fmt.Errorf("failed to close dumper: %w", err)
378+
}
367379
fmt.Print(buf.String())
368380
}
369381
}

cmd/go-yaml/yaml.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ func processYAMLLoad(reader io.Reader, preserve, marshal, encode bool, opts []ya
7777
enc.Close()
7878
return fmt.Errorf("failed to encode YAML: %w", err)
7979
}
80-
enc.Close()
80+
if err := enc.Close(); err != nil {
81+
return fmt.Errorf("failed to close encoder: %w", err)
82+
}
8183
} else {
8284
// Use Dumper for output with options
8385
dumper, err := yaml.NewDumper(os.Stdout, opts...)
@@ -88,7 +90,9 @@ func processYAMLLoad(reader io.Reader, preserve, marshal, encode bool, opts []ya
8890
dumper.Close()
8991
return fmt.Errorf("failed to dump YAML: %w", err)
9092
}
91-
dumper.Close()
93+
if err := dumper.Close(); err != nil {
94+
return fmt.Errorf("failed to close dumper: %w", err)
95+
}
9296
}
9397
}
9498
} else {
@@ -129,7 +133,9 @@ func processYAMLLoad(reader io.Reader, preserve, marshal, encode bool, opts []ya
129133
enc.Close()
130134
return fmt.Errorf("failed to encode YAML: %w", err)
131135
}
132-
enc.Close()
136+
if err := enc.Close(); err != nil {
137+
return fmt.Errorf("failed to close encoder: %w", err)
138+
}
133139
} else {
134140
// Use Dumper for output with options
135141
dumper, err := yaml.NewDumper(os.Stdout, opts...)
@@ -140,7 +146,9 @@ func processYAMLLoad(reader io.Reader, preserve, marshal, encode bool, opts []ya
140146
dumper.Close()
141147
return fmt.Errorf("failed to dump YAML: %w", err)
142148
}
143-
dumper.Close()
149+
if err := dumper.Close(); err != nil {
150+
return fmt.Errorf("failed to close dumper: %w", err)
151+
}
144152
}
145153
}
146154
}
@@ -188,7 +196,9 @@ func processYAMLDecode(reader io.Reader, preserve, encode bool, opts []yaml.Opti
188196
enc.Close()
189197
return fmt.Errorf("failed to encode YAML: %w", err)
190198
}
191-
enc.Close()
199+
if err := enc.Close(); err != nil {
200+
return fmt.Errorf("failed to close encoder: %w", err)
201+
}
192202
} else {
193203
// Default output (no options for deprecated Decode API)
194204
output, err := yaml.Marshal(outNode)
@@ -220,7 +230,9 @@ func processYAMLDecode(reader io.Reader, preserve, encode bool, opts []yaml.Opti
220230
enc.Close()
221231
return fmt.Errorf("failed to encode YAML: %w", err)
222232
}
223-
enc.Close()
233+
if err := enc.Close(); err != nil {
234+
return fmt.Errorf("failed to close encoder: %w", err)
235+
}
224236
} else {
225237
// Default output (no options for deprecated Decode API)
226238
output, err := yaml.Marshal(data)
@@ -294,7 +306,9 @@ func processYAMLUnmarshal(reader io.Reader, preserve, marshal bool) error {
294306
dumper.Close()
295307
return fmt.Errorf("failed to dump YAML: %w", err)
296308
}
297-
dumper.Close()
309+
if err := dumper.Close(); err != nil {
310+
return fmt.Errorf("failed to close dumper: %w", err)
311+
}
298312
}
299313
} else {
300314
// For unmarshal mode with -y (not -Y), always use `any` to avoid preserving comments
@@ -320,7 +334,9 @@ func processYAMLUnmarshal(reader io.Reader, preserve, marshal bool) error {
320334
dumper.Close()
321335
return fmt.Errorf("failed to dump YAML: %w", err)
322336
}
323-
dumper.Close()
337+
if err := dumper.Close(); err != nil {
338+
return fmt.Errorf("failed to close dumper: %w", err)
339+
}
324340
}
325341
}
326342
}

0 commit comments

Comments
 (0)