| 
					
				 | 
			
			
				@@ -61,13 +61,22 @@ smartlist_clear(smartlist_t *sl) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static INLINE void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smartlist_ensure_capacity(smartlist_t *sl, int size) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if SIZEOF_SIZE_T > SIZEOF_INT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define MAX_CAPACITY (INT_MAX) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define MAX_CAPACITY (int)((SIZE_MAX / (sizeof(void*)))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (size > sl->capacity) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    int higher = sl->capacity * 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    while (size > higher) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      higher *= 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    tor_assert(higher > 0); /* detect overflow */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    int higher = sl->capacity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (PREDICT_UNLIKELY(size > MAX_CAPACITY/2)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      tor_assert(size <= MAX_CAPACITY); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      higher = MAX_CAPACITY; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      while (size > higher) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        higher *= 2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     sl->capacity = higher; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    sl->list = tor_realloc(sl->list, sizeof(void*)*sl->capacity); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sl->list = tor_realloc(sl->list, sizeof(void*)*((size_t)sl->capacity)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |