Sfoglia il codice sorgente

fix free variables in generators from https://github.com/albertodemichelis/squirrel/commit/51137b84e66c4d526809fd8a59f4ba1d38138c76

mingodad 6 anni fa
parent
commit
19f961d566
1 ha cambiato i file con 1 aggiunte e 0 eliminazioni
  1. 1 0
      SquiLu/squirrel/sqvm.cpp

+ 1 - 0
SquiLu/squirrel/sqvm.cpp

@@ -1256,6 +1256,7 @@ exception_restore:
 			OPCODE_TARGET(YIELD) {
 			OPCODE_TARGET(YIELD) {
 				if(ci->_generator) {
 				if(ci->_generator) {
 					if(sarg1 != MAX_FUNC_STACKSIZE) temp_reg = STK(arg1);
 					if(sarg1 != MAX_FUNC_STACKSIZE) temp_reg = STK(arg1);
+					if (_openouters) CloseOuters(&_stack._vals[_stackbase]);
 					_GUARD(ci->_generator->Yield(this,arg2));
 					_GUARD(ci->_generator->Yield(this,arg2));
 					traps -= ci->_etraps;
 					traps -= ci->_etraps;
 					if(sarg1 != MAX_FUNC_STACKSIZE) _Swap(STK(arg1),temp_reg);//STK(arg1) = temp_reg;
 					if(sarg1 != MAX_FUNC_STACKSIZE) _Swap(STK(arg1),temp_reg);//STK(arg1) = temp_reg;