@@ -2561,6 +2561,30 @@ def test_incorrect_constructor(self):
25612561 args = ("bad.py" , 1 , 2 , "abcdefg" , 1 )
25622562 self .assertRaises (TypeError , SyntaxError , "bad bad" , args )
25632563
2564+ def test_syntax_error_memory_leak (self ):
2565+ # gh-146250: memory leak with re-initialization of SyntaxError
2566+ e = SyntaxError ("msg" , ("file.py" , 1 , 2 , "txt" , 2 , 3 ))
2567+ e .__init__ ("new_msg" , ("new_file.py" , 2 , 3 , "new_txt" , 3 , 4 ))
2568+ self .assertEqual (e .msg , "new_msg" )
2569+ self .assertEqual (e .args , ("new_msg" , ("new_file.py" , 2 , 3 , "new_txt" , 3 , 4 )))
2570+ self .assertEqual (e .filename , "new_file.py" )
2571+ self .assertEqual (e .lineno , 2 )
2572+ self .assertEqual (e .offset , 3 )
2573+ self .assertEqual (e .text , "new_txt" )
2574+ self .assertEqual (e .end_lineno , 3 )
2575+ self .assertEqual (e .end_offset , 4 )
2576+
2577+ e = SyntaxError ("msg" , ("file.py" , 1 , 2 , "txt" , 2 , 3 ))
2578+ e .__init__ ("new_msg" , ("new_file.py" , 2 , 3 , "new_txt" ))
2579+ self .assertEqual (e .msg , "new_msg" )
2580+ self .assertEqual (e .args , ("new_msg" , ("new_file.py" , 2 , 3 , "new_txt" )))
2581+ self .assertEqual (e .filename , "new_file.py" )
2582+ self .assertEqual (e .lineno , 2 )
2583+ self .assertEqual (e .offset , 3 )
2584+ self .assertEqual (e .text , "new_txt" )
2585+ self .assertIsNone (e .end_lineno )
2586+ self .assertIsNone (e .end_offset )
2587+
25642588
25652589class TestInvalidExceptionMatcher (unittest .TestCase ):
25662590 def test_except_star_invalid_exception_type (self ):
0 commit comments