mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	GH-94329: Don't raise on excessive stack consumption (GH-94421) (GH-94446)
(cherry picked from commit b152bf448b)
			
			
This commit is contained in:
		
							parent
							
								
									48a739ec10
								
							
						
					
					
						commit
						f58c366a73
					
				
					 3 changed files with 9 additions and 6 deletions
				
			
		|  | @ -1207,6 +1207,12 @@ def test_func_and(self): | ||||||
|         code += "   x and x\n" * self.N |         code += "   x and x\n" * self.N | ||||||
|         self.check_stack_size(code) |         self.check_stack_size(code) | ||||||
| 
 | 
 | ||||||
|  |     def test_stack_3050(self): | ||||||
|  |         M = 3050 | ||||||
|  |         code = "x," * M + "=t" | ||||||
|  |         # This raised on 3.10.0 to 3.10.5 | ||||||
|  |         compile(code, "<foo>", "single") | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| class TestStackSizeStability(unittest.TestCase): | class TestStackSizeStability(unittest.TestCase): | ||||||
|     # Check that repeating certain snippets doesn't increase the stack size |     # Check that repeating certain snippets doesn't increase the stack size | ||||||
|  |  | ||||||
|  | @ -0,0 +1,2 @@ | ||||||
|  | Compile and run code with unpacking of extremely large sequences (1000s of elements). | ||||||
|  | Such code failed to compile. It now compiles and runs correctly. | ||||||
|  | @ -8391,12 +8391,7 @@ assemble(struct compiler *c, int addNone) | ||||||
|     if (maxdepth < 0) { |     if (maxdepth < 0) { | ||||||
|         goto error; |         goto error; | ||||||
|     } |     } | ||||||
|     if (maxdepth > MAX_ALLOWED_STACK_USE) { |     /* TO DO -- For 3.12, make sure that `maxdepth <= MAX_ALLOWED_STACK_USE` */ | ||||||
|         PyErr_Format(PyExc_SystemError, |  | ||||||
|                      "excessive stack use: stack is %d deep", |  | ||||||
|                      maxdepth); |  | ||||||
|         goto error; |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     if (label_exception_targets(entryblock)) { |     if (label_exception_targets(entryblock)) { | ||||||
|         goto error; |         goto error; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Miss Islington (bot)
						Miss Islington (bot)