dovecot: pool_system_realloc(): Moved malloc_usable_size() check...

dovecot at dovecot.org dovecot at dovecot.org
Thu Aug 16 17:23:14 EEST 2007


details:   http://hg.dovecot.org/dovecot/rev/7d82a232b5b0
changeset: 6300:7d82a232b5b0
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Aug 16 17:23:11 2007 +0300
description:
pool_system_realloc(): Moved malloc_usable_size() check before realloc() so
that we don't assert-crash if realloc() shrinks memory.

diffstat:

1 file changed, 5 insertions(+), 4 deletions(-)
src/lib/mempool-system.c |    9 +++++----

diffs (26 lines):

diff -r 6342c8cc76c7 -r 7d82a232b5b0 src/lib/mempool-system.c
--- a/src/lib/mempool-system.c	Wed Aug 15 19:17:48 2007 +0300
+++ b/src/lib/mempool-system.c	Thu Aug 16 17:23:11 2007 +0300
@@ -97,6 +97,11 @@ static void *pool_system_realloc(pool_t 
 	if (new_size == 0 || new_size > SSIZE_T_MAX)
 		i_panic("Trying to allocate %"PRIuSIZE_T" bytes", new_size);
 
+#if !defined(USE_GC) && defined(HAVE_MALLOC_USABLE_SIZE)
+	i_assert(old_size == (size_t)-1 || mem == NULL ||
+		 old_size <= malloc_usable_size(mem));
+#endif
+
 #ifndef USE_GC
 	mem = realloc(mem, new_size);
 #else
@@ -107,10 +112,6 @@ static void *pool_system_realloc(pool_t 
 			       "pool_system_realloc(): Out of memory");
 	}
 
-#if !defined(USE_GC) && defined(HAVE_MALLOC_USABLE_SIZE)
-	i_assert(old_size == (size_t)-1 || mem == NULL ||
-		 old_size <= malloc_usable_size(mem));
-#endif
 	if (old_size < new_size) {
                 /* clear new data */
 		memset((char *) mem + old_size, 0, new_size - old_size);


More information about the dovecot-cvs mailing list