[object Object]

← back to Cli Printing Press

fix(openapi): collect paths to delete before mutation in stripBrokenRefs (#259)

28ba1e01d86e4d5b756dab9a4e0fce36bd41c3a9 · 2026-04-24 14:04:15 -0700 · Dinakar Sarbada

Co-authored-by: Dinakar Sarbada <dinakars777@users.noreply.github.com>

Files touched

Diff

commit 28ba1e01d86e4d5b756dab9a4e0fce36bd41c3a9
Author: Dinakar Sarbada <sarbadadinu@gmail.com>
Date:   Fri Apr 24 14:04:15 2026 -0700

    fix(openapi): collect paths to delete before mutation in stripBrokenRefs (#259)
    
    Co-authored-by: Dinakar Sarbada <dinakars777@users.noreply.github.com>
---
 internal/openapi/parser.go | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/internal/openapi/parser.go b/internal/openapi/parser.go
index f3ae5f42..dc18b22a 100644
--- a/internal/openapi/parser.go
+++ b/internal/openapi/parser.go
@@ -92,15 +92,21 @@ func stripBrokenRefs(data []byte, errMsg string) []byte {
 		if pathsRaw, ok := raw["paths"]; ok {
 			var paths map[string]json.RawMessage
 			if json.Unmarshal(pathsRaw, &paths) == nil {
+				var pathsToDelete []string
 				for pathKey, pathVal := range paths {
 					if strings.Contains(string(pathVal), refStr) {
-						delete(paths, pathKey)
+						pathsToDelete = append(pathsToDelete, pathKey)
 						fmt.Fprintf(os.Stderr, "info: removed path %s (references broken %s)\n", pathKey, brokenKey)
-						modified = true
 					}
 				}
-				pathsBytes, _ := json.Marshal(paths)
-				raw["paths"] = pathsBytes
+				for _, pk := range pathsToDelete {
+					delete(paths, pk)
+					modified = true
+				}
+				if len(pathsToDelete) > 0 {
+					pathsBytes, _ := json.Marshal(paths)
+					raw["paths"] = pathsBytes
+				}
 			}
 		}
 

← 1645e962 fix(cli): quote paths in emboss stderr output to prevent she  ·  back to Cli Printing Press  ·  fix(megamcp): validate placeholders before substitution in A 2c802afe →