Always throw out the whole screen array
If n < screens_len, screens_len did not get updated. So boundary checks wouldn't catch, if screens between n and screens_len are accessed. This will prevent such an error type in the future.
This commit is contained in:
		
							parent
							
								
									9bcb27f2e8
								
							
						
					
					
						commit
						121ddd2b94
					
				| @ -77,12 +77,8 @@ void init_screens(void) | |||||||
| void alloc_screen_ar(int n) | void alloc_screen_ar(int n) | ||||||
| { | { | ||||||
|         assert(n > 0); |         assert(n > 0); | ||||||
|         if (n <= screens_len) return; |         g_free(screens); | ||||||
| 
 |         screens = g_malloc0(n * sizeof(struct screen_info)); | ||||||
|         screens = g_realloc(screens, n * sizeof(struct screen_info)); |  | ||||||
| 
 |  | ||||||
|         memset(screens, 0, n * sizeof(struct screen_info)); |  | ||||||
| 
 |  | ||||||
|         screens_len = n; |         screens_len = n; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Benedikt Heine
						Benedikt Heine