Permit a Null Shader in case of a bad host_ptr.
This commit is contained in:
		
							parent
							
								
									47f2405ab1
								
							
						
					
					
						commit
						021cd56bc9
					
				| @ -57,3 +57,21 @@ __declspec(noinline, noreturn) | ||||
| 
 | ||||
| #define UNIMPLEMENTED_IF(cond) ASSERT_MSG(!(cond), "Unimplemented code!") | ||||
| #define UNIMPLEMENTED_IF_MSG(cond, ...) ASSERT_MSG(!(cond), __VA_ARGS__) | ||||
| 
 | ||||
| // If the assert is ignored, execute _b_
 | ||||
| #define ASSERT_OR_EXECUTE(_a_, _b_)                                                                \ | ||||
|     do {                                                                                           \ | ||||
|         ASSERT(_a_);                                                                               \ | ||||
|         if (!(_a_)) {                                                                              \ | ||||
|             _b_                                                                                    \ | ||||
|         }                                                                                          \ | ||||
|     } while (0) | ||||
| 
 | ||||
| // If the assert is ignored, execute _b_
 | ||||
| #define ASSERT_OR_EXECUTE_MSG(_a_, _b_, ...)                                                       \ | ||||
|     do {                                                                                           \ | ||||
|         ASSERT_MSG(_a_, __VA_ARGS__);                                                              \ | ||||
|         if (!(_a_)) {                                                                              \ | ||||
|             _b_                                                                                    \ | ||||
|         }                                                                                          \ | ||||
|     } while (0) | ||||
|  | ||||
| @ -41,6 +41,10 @@ GPUVAddr GetShaderAddress(Maxwell::ShaderProgram program) { | ||||
| /// Gets the shader program code from memory for the specified address
 | ||||
| ProgramCode GetShaderCode(const u8* host_ptr) { | ||||
|     ProgramCode program_code(VideoCommon::Shader::MAX_PROGRAM_LENGTH); | ||||
|     ASSERT_OR_EXECUTE(host_ptr != nullptr, { | ||||
|         std::fill(program_code.begin(), program_code.end(), 0); | ||||
|         return program_code; | ||||
|     }); | ||||
|     std::memcpy(program_code.data(), host_ptr, program_code.size() * sizeof(u64)); | ||||
|     return program_code; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Fernando Sahmkow
						Fernando Sahmkow