diff --git a/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c b/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c
index 005989bb75..e438a89543 100644
--- a/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c
+++ b/libs/sofia-sip/libsofia-sip-ua/su/su_alloc.c
@@ -432,6 +432,8 @@ void *sub_alloc(su_home_t *home,
   if (size >= ((size_t)1) << SIZEBITS)
     return (void)(errno = ENOMEM), NULL;
 
+  if (!size) return NULL;
+
   if (sub == NULL || 3 * sub->sub_used > 2 * sub->sub_n) {
     /* Resize the hash table */
     size_t i, n, n2;
@@ -474,7 +476,7 @@ void *sub_alloc(su_home_t *home,
     sub = b2;
   }
 
-  if (size && sub && zero < do_clone &&
+  if (sub && zero < do_clone &&
       sub->sub_preload && size <= sub->sub_prsize) {
     /* Use preloaded memory */
     size_t prused = sub->sub_prused + size + MEMCHECK_EXTRA;