[gmime/gmime-2-4] fixed 64bit clean issues



commit ea919fc92aea975442d7abfb70d8bd9f8d2bec81
Author: Jeffrey Stedfast <fejj gnome org>
Date:   Sun May 3 09:35:36 2009 -0400

    fixed 64bit clean issues
    
    2009-05-02  Jeffrey Stedfast  <fejj novell com>
    
    	* gmime/gmime-stream-buffer.c (stream_seek_cache_read): Fixed a
    	64bit cleanlines issue.
    	(stream_seek_cache_read): Cap the max cache size to G_MAXSIZE.
---
 ChangeLog                   |    6 ++++++
 gmime/gmime-stream-buffer.c |   12 ++++++++----
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 869d959..c227c7c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-05-02  Jeffrey Stedfast  <fejj novell com>
+
+	* gmime/gmime-stream-buffer.c (stream_seek_cache_read): Fixed a
+	64bit cleanlines issue.
+	(stream_seek_cache_read): Cap the max cache size to G_MAXSIZE.
+
 2009-04-27  Jeffrey Stedfast  <fejj novell com>
 
 	* README: Bumped version
diff --git a/gmime/gmime-stream-buffer.c b/gmime/gmime-stream-buffer.c
index 1027165..0321675 100644
--- a/gmime/gmime-stream-buffer.c
+++ b/gmime/gmime-stream-buffer.c
@@ -466,8 +466,8 @@ stream_seek_block_read (GMimeStream *stream, gint64 offset, GMimeSeekWhence when
 	    || (offset > 0 && offset <= buffer->buflen)) {
 		/* the position is within our pre-buffered region */
 		stream->position += offset;
-		buffer->bufptr += offset;
-		buffer->buflen -= offset;
+		buffer->bufptr += (size_t) offset;
+		buffer->buflen -= (size_t) offset;
 		
 		return stream->position;
 	}
@@ -489,7 +489,7 @@ static gint64
 stream_seek_cache_read (GMimeStream *stream, gint64 offset, GMimeSeekWhence whence)
 {
 	GMimeStreamBuffer *buffer = (GMimeStreamBuffer *) stream;
-	size_t len, total = 0;
+	gint64 buflen, len, total = 0;
 	gint64 pos, real;
 	ssize_t nread;
 	
@@ -538,7 +538,11 @@ stream_seek_cache_read (GMimeStream *stream, gint64 offset, GMimeSeekWhence when
 		
 		pos = buffer->bufptr - buffer->buffer;
 		
-		buffer->buflen = buffer->bufend - buffer->buffer + len;
+		buflen = (buffer->bufend - buffer->buffer) + len;
+		if (buflen < G_MAXSIZE)
+			buffer->buflen = (size_t) buflen;
+		else
+			buffer->buflen = G_MAXSIZE;
 		
 		buffer->buffer = g_realloc (buffer->buffer, buffer->buflen);
 		buffer->bufend = buffer->buffer + buffer->buflen;



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