Skip to content

Commit 3c890aa

Browse files
committed
Fix infinite loop when resolving swagger schema
1 parent 88995f5 commit 3c890aa

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/utils/swagger/dereference.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@ function resolveRef(path, schema) {
99
return get(schema, lodashPath);
1010
}
1111

12-
function resolve(tree, schema) {
12+
function resolve(tree, schema, resolved = new WeakSet()) {
13+
if (resolved.has(tree)) return; // Prevent infinite loop
14+
resolved.add(tree);
15+
1316
for (const key of Object.keys(tree)) {
1417
if (isRef(tree[key])) tree[key] = resolveRef(tree[key].$ref, schema);
15-
if (isObject(tree[key])) resolve(tree[key], schema);
18+
if (isObject(tree[key])) resolve(tree[key], schema, resolved);
1619
}
1720
}
1821

0 commit comments

Comments
 (0)