@@ -653,12 +653,13 @@ function process_effects(effect, filter_flags, shallow, collected_effects) {
653
653
}
654
654
655
655
if ( effects . length > 0 ) {
656
- if ( ( filter_flags & EFFECT ) !== 0 ) {
657
- collected_effects . push ( ...effects ) ;
658
- }
659
-
660
- if ( ! shallow ) {
661
- for ( var i = 0 ; i < effects . length ; i ++ ) {
656
+ // We might be dealing with many effects here, far more than can be spread into
657
+ // an array push call (callstack overflow). So let's deal with each effect in a loop.
658
+ for ( var i = 0 ; i < effects . length ; i ++ ) {
659
+ if ( ( filter_flags & EFFECT ) !== 0 ) {
660
+ collected_effects . push ( effects [ i ] ) ;
661
+ }
662
+ if ( ! shallow ) {
662
663
process_effects ( effects [ i ] , filter_flags , false , collected_effects ) ;
663
664
}
664
665
}
@@ -677,7 +678,6 @@ function process_effects(effect, filter_flags, shallow, collected_effects) {
677
678
* @returns {void }
678
679
*/
679
680
function flush_nested_effects ( effect , filter_flags , shallow = false ) {
680
- infinite_loop_guard ( ) ;
681
681
/** @type {import('#client').Effect[] } */
682
682
var collected_effects = [ ] ;
683
683
@@ -1163,7 +1163,7 @@ export function pop(component) {
1163
1163
const effects = context_stack_item . e ;
1164
1164
if ( effects !== null ) {
1165
1165
context_stack_item . e = null ;
1166
- for ( let i = 0 ; i < effects . length ; i ++ ) {
1166
+ for ( var i = 0 ; i < effects . length ; i ++ ) {
1167
1167
effect ( effects [ i ] ) ;
1168
1168
}
1169
1169
}
0 commit comments