jrse: fix #1082, fail if setTimeout/setInterval lack callback
This commit is contained in:
		
							parent
							
								
									ae9e9efa31
								
							
						
					
					
						commit
						f27e826b14
					
				
							
								
								
									
										18
									
								
								jsre/jsre.go
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								jsre/jsre.go
									
									
									
									
									
								
							| @ -85,7 +85,6 @@ func (self *JSRE) runEventLoop() { | ||||
| 	ready := make(chan *jsTimer) | ||||
| 
 | ||||
| 	newTimer := func(call otto.FunctionCall, interval bool) (*jsTimer, otto.Value) { | ||||
| 
 | ||||
| 		delay, _ := call.Argument(1).ToInteger() | ||||
| 		if 0 >= delay { | ||||
| 			delay = 1 | ||||
| @ -105,7 +104,6 @@ func (self *JSRE) runEventLoop() { | ||||
| 		if err != nil { | ||||
| 			panic(err) | ||||
| 		} | ||||
| 
 | ||||
| 		return timer, value | ||||
| 	} | ||||
| 
 | ||||
| @ -127,8 +125,20 @@ func (self *JSRE) runEventLoop() { | ||||
| 		} | ||||
| 		return otto.UndefinedValue() | ||||
| 	} | ||||
| 	vm.Set("setTimeout", setTimeout) | ||||
| 	vm.Set("setInterval", setInterval) | ||||
| 	vm.Set("_setTimeout", setTimeout) | ||||
| 	vm.Set("_setInterval", setInterval) | ||||
| 	vm.Run(`var setTimeout = function(args) { | ||||
| 		if (arguments.length < 1) { | ||||
| 			throw TypeError("Failed to execute 'setTimeout': 1 argument required, but only 0 present."); | ||||
| 		} | ||||
| 		return _setTimeout.apply(this, arguments); | ||||
| 	}`) | ||||
| 	vm.Run(`var setInterval = function(args) { | ||||
| 		if (arguments.length < 1) { | ||||
| 			throw TypeError("Failed to execute 'setInterval': 1 argument required, but only 0 present."); | ||||
| 		} | ||||
| 		return _setInterval.apply(this, arguments); | ||||
| 	}`) | ||||
| 	vm.Set("clearTimeout", clearTimeout) | ||||
| 	vm.Set("clearInterval", clearTimeout) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user