mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 11:42:28 +00:00 
			
		
		
		
	harden a few API methods against longjumps in set_error. Memory leak exposed in #1297
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									09ea370ea3
								
							
						
					
					
						commit
						c093e6d4b9
					
				
					 4 changed files with 26 additions and 22 deletions
				
			
		|  | @ -442,6 +442,7 @@ extern "C" { | |||
|         unsigned sz = __assumptions.size(); | ||||
|         for (unsigned i = 0; i < sz; ++i) { | ||||
|             if (!is_expr(__assumptions[i])) { | ||||
|                 _assumptions.finalize(); _consequences.finalize(); _variables.finalize(); | ||||
|                 SET_ERROR_CODE(Z3_INVALID_USAGE); | ||||
|                 return Z3_L_UNDEF; | ||||
|             } | ||||
|  | @ -451,6 +452,7 @@ extern "C" { | |||
|         sz = __variables.size(); | ||||
|         for (unsigned i = 0; i < sz; ++i) { | ||||
|             if (!is_expr(__variables[i])) { | ||||
|                 _assumptions.finalize(); _consequences.finalize(); _variables.finalize(); | ||||
|                 SET_ERROR_CODE(Z3_INVALID_USAGE); | ||||
|                 return Z3_L_UNDEF; | ||||
|             } | ||||
|  | @ -471,6 +473,7 @@ extern "C" { | |||
|             } | ||||
|             catch (z3_exception & ex) { | ||||
|                 to_solver_ref(s)->set_reason_unknown(eh); | ||||
|                 _assumptions.finalize(); _consequences.finalize(); _variables.finalize(); | ||||
|                 mk_c(c)->handle_exception(ex); | ||||
|                 return Z3_L_UNDEF; | ||||
|             } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue