Skip to content

Commit d3f95f5

Browse files
committed
fix: prevent internal inifinity loop with runInContext
1 parent b36d3ab commit d3f95f5

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

libs/angular-three/src/lib/di/run-in-context.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,22 @@ export function createRunInContext() {
77
const originalGet = envInjector.get.bind(envInjector);
88

99
return <TReturn>(cb: () => TReturn): TReturn => {
10+
let tryFromNodeInjector = false;
1011
envInjector.get = (...args: Parameters<EnvironmentInjector['get']>) => {
1112
try {
12-
const fromNodeInjector = nodeInjector.get(...(args as Parameters<Injector['get']>));
13-
if (fromNodeInjector) return fromNodeInjector;
13+
if (!tryFromNodeInjector) {
14+
tryFromNodeInjector = true;
15+
const fromNodeInjector = nodeInjector.get(...(args as Parameters<Injector['get']>));
16+
if (fromNodeInjector) {
17+
tryFromNodeInjector = false;
18+
return fromNodeInjector;
19+
}
20+
}
1421
return originalGet(...args);
1522
} catch (e) {
1623
return originalGet(...args);
24+
} finally {
25+
tryFromNodeInjector = false;
1726
}
1827
};
1928

0 commit comments

Comments
 (0)