diff --git a/src/common/container.c b/src/common/container.c
index 46d9c2ee79..b1431dfa90 100644
--- a/src/common/container.c
+++ b/src/common/container.c
@@ -58,11 +58,16 @@ smartlist_clear(smartlist_t *sl)
sl->num_used = 0;
}
+#if SIZE_MAX < INT_MAX
+#error "We don't support systems where size_t is smaller than int."
+#endif
+
/** Make sure that sl can hold at least size entries. */
static INLINE void
smartlist_ensure_capacity(smartlist_t *sl, size_t size)
{
-#if SIZEOF_SIZE_T > SIZEOF_INT
+ /* Set MAX_CAPACITY to MIN(INT_MAX, SIZE_MAX / sizeof(void*)) */
+#if (SIZE_MAX/SIZEOF_VOID_P) > INT_MAX
#define MAX_CAPACITY (INT_MAX)
#else
#define MAX_CAPACITY (int)((SIZE_MAX / (sizeof(void*))))