vm: win32 GetCurrentThread is a fake thread handle
Open a real thread handle with the necessary permissions to dispatch a handler from the the Ctrl-C handler thread.db4
							parent
							
								
									af0f021a94
								
							
						
					
					
						commit
						9541bf14f5
					
				| 
						 | 
				
			
			@ -73,7 +73,18 @@ long getpagesize();
 | 
			
		|||
void move_file(const vm_char *path1, const vm_char *path2);
 | 
			
		||||
VM_C_API LONG exception_handler(PEXCEPTION_RECORD e, void *frame, PCONTEXT c, void *dispatch);
 | 
			
		||||
THREADHANDLE start_thread(void *(*start_routine)(void *),void *args);
 | 
			
		||||
inline static THREADHANDLE thread_id() { return GetCurrentThread(); }
 | 
			
		||||
 | 
			
		||||
inline static THREADHANDLE thread_id()
 | 
			
		||||
{
 | 
			
		||||
	DWORD id = GetCurrentThreadId();
 | 
			
		||||
	HANDLE threadHandle = OpenThread(
 | 
			
		||||
		THREAD_GET_CONTEXT | THREAD_SET_CONTEXT | THREAD_SUSPEND_RESUME,
 | 
			
		||||
		FALSE,
 | 
			
		||||
		id
 | 
			
		||||
	);
 | 
			
		||||
	assert(threadHandle != NULL);
 | 
			
		||||
	return threadHandle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define CODE_TO_FUNCTION_POINTER(code) (void)0
 | 
			
		||||
#define CODE_TO_FUNCTION_POINTER_CALLBACK(vm, code) (void)0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue