gmime r1473 - trunk/gmime



Author: fejj
Date: Thu Oct  2 03:09:59 2008
New Revision: 1473
URL: http://svn.gnome.org/viewvc/gmime?rev=1473&view=rev

Log:
use a more conservative headerbuf growing algorithm

Modified:
   trunk/gmime/gmime-parser.c

Modified: trunk/gmime/gmime-parser.c
==============================================================================
--- trunk/gmime/gmime-parser.c	(original)
+++ trunk/gmime/gmime-parser.c	Thu Oct  2 03:09:59 2008
@@ -760,7 +760,8 @@
 	return 0;
 }
 
-static size_t
+#ifdef ALLOC_NEAREST_POW2
+static inline size_t
 nearest_pow (size_t num)
 {
 	size_t n = num > 0 ? num - 1 : 0;
@@ -775,12 +776,21 @@
 	return n;
 }
 
+#define next_alloc_size(n) nearest_pow (n)
+#else
+static inline size_t
+next_alloc_size (size_t n)
+{
+	return ((n + 63) / 64) * 64;
+}
+#endif
+
 #define header_append(priv, start, len) G_STMT_START {                    \
 	if (priv->headerleft <= len) {                                    \
 		size_t hlen, hoff;                                        \
 		                                                          \
 		hoff = priv->headerptr - priv->headerbuf;                 \
-		hlen = nearest_pow (hoff + len + 1);                      \
+		hlen = next_alloc_size (hoff + len + 1);                  \
 		                                                          \
 		priv->headerbuf = g_realloc (priv->headerbuf, hlen);      \
 		priv->headerptr = priv->headerbuf + hoff;                 \
@@ -797,7 +807,7 @@
 		size_t hlen, hoff;                                        \
 		                                                          \
 		hoff = priv->rawptr - priv->rawbuf;                       \
-		hlen = nearest_pow (hoff + len + 1);                      \
+		hlen = next_alloc_size (hoff + len + 1);                  \
 		                                                          \
 		priv->rawbuf = g_realloc (priv->rawbuf, hlen);            \
 		priv->rawptr = priv->rawbuf + hoff;                       \



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]