Fix string_t return hook, Fix GetHandleIfValidOrError checking only for g_HookSetupHandle
This commit is contained in:
		
							parent
							
								
									caccb5a0ff
								
							
						
					
					
						commit
						0a051ab32e
					
				@ -26,7 +26,7 @@ bool GetHandleIfValidOrError(HandleType_t type, void **object, IPluginContext *p
 | 
				
			|||||||
	HandleError err;
 | 
						HandleError err;
 | 
				
			||||||
	HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
 | 
						HandleSecurity sec(pContext->GetIdentity(), myself->GetIdentity());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if((err = handlesys->ReadHandle(param, g_HookSetupHandle, &sec, object)) != HandleError_None)
 | 
						if((err = handlesys->ReadHandle(param, type, &sec, object)) != HandleError_None)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		return pContext->ThrowNativeError("Invalid Handle %x (error %d)", param, err) != 0;
 | 
							return pContext->ThrowNativeError("Invalid Handle %x (error %d)", param, err) != 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								vhook.cpp
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								vhook.cpp
									
									
									
									
									
								
							@ -45,13 +45,17 @@ DHooksManager::DHooksManager(HookSetup *setup, void *iface, IPluginFunction *rem
 | 
				
			|||||||
	{
 | 
						{
 | 
				
			||||||
		protoInfo.SetReturnType(0, SourceHook::PassInfo::PassType_Unknown, 0, NULL, NULL, NULL, NULL);
 | 
							protoInfo.SetReturnType(0, SourceHook::PassInfo::PassType_Unknown, 0, NULL, NULL, NULL, NULL);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if(this->callback->returnType != ReturnType_Float)
 | 
						else if(this->callback->returnType == ReturnType_Float)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		protoInfo.SetReturnType(sizeof(void *), SourceHook::PassInfo::PassType_Basic, setup->returnFlag, NULL, NULL, NULL, NULL);
 | 
							protoInfo.SetReturnType(sizeof(void *), SourceHook::PassInfo::PassType_Float, setup->returnFlag, NULL, NULL, NULL, NULL);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else if(this->callback->returnType == ReturnType_String)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							protoInfo.SetReturnType(sizeof(void *), SourceHook::PassInfo::PassType_Object, setup->returnFlag, NULL, NULL, NULL, NULL);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		protoInfo.SetReturnType(sizeof(void *), SourceHook::PassInfo::PassType_Float, setup->returnFlag, NULL, NULL, NULL, NULL);
 | 
							protoInfo.SetReturnType(sizeof(void *), SourceHook::PassInfo::PassType_Basic, setup->returnFlag, NULL, NULL, NULL, NULL);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	HookManagerPubFunc hook = g_pHookManager->MakeHookMan(protoInfo, 0, this->callback->offset);
 | 
						HookManagerPubFunc hook = g_pHookManager->MakeHookMan(protoInfo, 0, this->callback->offset);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -135,7 +139,7 @@ HookReturnStruct *GetReturnStruct(DHooksCallback *dg, const void *result)
 | 
				
			|||||||
		switch(dg->returnType)
 | 
							switch(dg->returnType)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			case ReturnType_String:
 | 
								case ReturnType_String:
 | 
				
			||||||
				*(string_t *)res->orgResult = *(string_t *)res->orgResult;
 | 
									*(string_t *)res->orgResult = *(string_t *)result;
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			//ReturnType_Vector,
 | 
								//ReturnType_Vector,
 | 
				
			||||||
			case ReturnType_Int:
 | 
								case ReturnType_Int:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user