From: cristy Date: Sat, 19 Jan 2013 17:24:56 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~4407 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d6e5ed33d9aafa8f07c523b5aa53f1ab22100a78;p=imagemagick --- diff --git a/MagickCore/cache.c b/MagickCore/cache.c index e75a0753a..02f3f2398 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -4403,15 +4403,15 @@ static MagickBooleanType ReadPixelCacheMetacontent(CacheInfo *cache_info, extent, length; + RectangleInfo + region; + register ssize_t y; register unsigned char *restrict q; - size_t - rows; - if (cache_info->metacontent_extent == 0) return(MagickFalse); if (IsPixelAuthentic(cache_info,nexus_info) != MagickFalse) @@ -4420,8 +4420,9 @@ static MagickBooleanType ReadPixelCacheMetacontent(CacheInfo *cache_info, nexus_info->region.x; length=(MagickSizeType) nexus_info->region.width* cache_info->metacontent_extent; - rows=nexus_info->region.height; - extent=length*rows; + extent=length*nexus_info->region.height; + region=nexus_info->region; + y=0; q=(unsigned char *) nexus_info->metacontent; switch (cache_info->type) { @@ -4438,11 +4439,11 @@ static MagickBooleanType ReadPixelCacheMetacontent(CacheInfo *cache_info, (extent == (MagickSizeType) ((size_t) extent))) { length=extent; - rows=1UL; + region.height=1UL; } p=(unsigned char *) cache_info->metacontent+offset* cache_info->metacontent_extent; - for (y=0; y < (ssize_t) rows; y++) + for (y=0; y < (ssize_t) region.height; y++) { (void) memcpy(q,p,(size_t) length); p+=cache_info->metacontent_extent*cache_info->columns; @@ -4467,15 +4468,15 @@ static MagickBooleanType ReadPixelCacheMetacontent(CacheInfo *cache_info, (extent <= MagickMaxBufferExtent)) { length=extent; - rows=1UL; + region.height=1UL; } extent=(MagickSizeType) cache_info->columns*cache_info->rows; - for (y=0; y < (ssize_t) rows; y++) + for (y=0; y < (ssize_t) region.height; y++) { count=ReadPixelCacheRegion(cache_info,cache_info->offset+extent* cache_info->number_channels*sizeof(Quantum)+offset* cache_info->metacontent_extent,length,(unsigned char *) q); - if ((MagickSizeType) count != length) + if (count != (MagickOffsetType) length) break; offset+=cache_info->columns; q+=cache_info->metacontent_extent*nexus_info->region.width; @@ -4483,50 +4484,36 @@ static MagickBooleanType ReadPixelCacheMetacontent(CacheInfo *cache_info, if (IsFileDescriptorLimitExceeded() != MagickFalse) (void) ClosePixelCacheOnDisk(cache_info); UnlockSemaphoreInfo(cache_info->file_semaphore); - if (y < (ssize_t) rows) - { - ThrowFileException(exception,CacheError,"UnableToReadPixelCache", - cache_info->cache_filename); - return(MagickFalse); - } break; } case DistributedCache: { - MagickBooleanType - status; - - RectangleInfo - region; - /* Read metacontent from distributed cache. */ LockSemaphoreInfo(cache_info->file_semaphore); - region=nexus_info->region; - region.height=1; - status=MagickTrue; - for (y=0; y < (ssize_t) rows; y++) + region.height=1UL; + for (y=0; y < (ssize_t) region.height; y++) { - status=ReadDistributePixelCachePixels(cache_info->server_info,®ion, + count=ReadDistributePixelCachePixels(cache_info->server_info,®ion, length,(unsigned char *) q); - if (status == MagickFalse) + if (count != (MagickOffsetType) length) break; q+=cache_info->metacontent_extent*nexus_info->region.width; region.y++; } UnlockSemaphoreInfo(cache_info->file_semaphore); - if (status == MagickFalse) - { - ThrowFileException(exception,CacheError,"UnableToReadPixelCache", - cache_info->cache_filename); - return(MagickFalse); - } break; } default: break; } + if (y < (ssize_t) region.height) + { + ThrowFileException(exception,CacheError,"UnableToReadPixelCache", + cache_info->cache_filename); + return(MagickFalse); + } if ((cache_info->debug != MagickFalse) && (CacheTick(nexus_info->region.y,cache_info->rows) != MagickFalse)) (void) LogMagickEvent(CacheEvent,GetMagickModule(), @@ -4575,23 +4562,24 @@ static MagickBooleanType ReadPixelCachePixels(CacheInfo *cache_info, extent, length; + RectangleInfo + region; + register Quantum *restrict q; register ssize_t y; - size_t - rows; - if (IsPixelAuthentic(cache_info,nexus_info) != MagickFalse) return(MagickTrue); offset=(MagickOffsetType) nexus_info->region.y*cache_info->columns+ nexus_info->region.x; length=(MagickSizeType) cache_info->number_channels*nexus_info->region.width* sizeof(Quantum); - rows=nexus_info->region.height; - extent=length*rows; + extent=length*nexus_info->region.height; + region=nexus_info->region; + y=0; q=nexus_info->pixels; switch (cache_info->type) { @@ -4608,10 +4596,10 @@ static MagickBooleanType ReadPixelCachePixels(CacheInfo *cache_info, (extent == (MagickSizeType) ((size_t) extent))) { length=extent; - rows=1UL; + region.height=1UL; } p=cache_info->pixels+offset*cache_info->number_channels; - for (y=0; y < (ssize_t) rows; y++) + for (y=0; y < (ssize_t) region.height; y++) { (void) memcpy(q,p,(size_t) length); p+=cache_info->number_channels*cache_info->columns; @@ -4636,13 +4624,13 @@ static MagickBooleanType ReadPixelCachePixels(CacheInfo *cache_info, (extent <= MagickMaxBufferExtent)) { length=extent; - rows=1UL; + region.height=1UL; } - for (y=0; y < (ssize_t) rows; y++) + for (y=0; y < (ssize_t) region.height; y++) { count=ReadPixelCacheRegion(cache_info,cache_info->offset+offset* cache_info->number_channels*sizeof(*q),length,(unsigned char *) q); - if ((MagickSizeType) count != length) + if (count != (MagickOffsetType) length) break; offset+=cache_info->columns; q+=cache_info->number_channels*nexus_info->region.width; @@ -4650,50 +4638,36 @@ static MagickBooleanType ReadPixelCachePixels(CacheInfo *cache_info, if (IsFileDescriptorLimitExceeded() != MagickFalse) (void) ClosePixelCacheOnDisk(cache_info); UnlockSemaphoreInfo(cache_info->file_semaphore); - if (y < (ssize_t) rows) - { - ThrowFileException(exception,CacheError,"UnableToReadPixelCache", - cache_info->cache_filename); - return(MagickFalse); - } break; } case DistributedCache: { - MagickBooleanType - status; - - RectangleInfo - region; - /* Read pixels from distributed cache. */ LockSemaphoreInfo(cache_info->file_semaphore); - region=nexus_info->region; - region.height=1; - status=MagickTrue; - for (y=0; y < (ssize_t) rows; y++) + region.height=1UL; + for (y=0; y < (ssize_t) region.height; y++) { - status=ReadDistributePixelCachePixels(cache_info->server_info,®ion, + count=ReadDistributePixelCachePixels(cache_info->server_info,®ion, length,(unsigned char *) q); - if (status == MagickFalse) + if (count != (MagickOffsetType) length) break; q+=cache_info->number_channels*nexus_info->region.width; region.y++; } UnlockSemaphoreInfo(cache_info->file_semaphore); - if (status == MagickFalse) - { - ThrowFileException(exception,CacheError,"UnableToReadPixelCache", - cache_info->cache_filename); - return(MagickFalse); - } break; } default: break; } + if (y < (ssize_t) region.height) + { + ThrowFileException(exception,CacheError,"UnableToReadPixelCache", + cache_info->cache_filename); + return(MagickFalse); + } if ((cache_info->debug != MagickFalse) && (CacheTick(nexus_info->region.y,cache_info->rows) != MagickFalse)) (void) LogMagickEvent(CacheEvent,GetMagickModule(), @@ -5319,6 +5293,7 @@ MagickPrivate MagickBooleanType SyncImagePixelCache(Image *image, assert(image != (Image *) NULL); assert(exception != (ExceptionInfo *) NULL); + cache_info=(CacheInfo *) image->cache; cache_info=(CacheInfo *) GetImagePixelCache(image,MagickTrue,exception); return(cache_info == (CacheInfo *) NULL ? MagickFalse : MagickTrue); } @@ -5362,15 +5337,15 @@ static MagickBooleanType WritePixelCacheMetacontent(CacheInfo *cache_info, extent, length; + RectangleInfo + region; + register const unsigned char *restrict p; register ssize_t y; - size_t - rows; - if (cache_info->metacontent_extent == 0) return(MagickFalse); if (IsPixelAuthentic(cache_info,nexus_info) != MagickFalse) @@ -5379,8 +5354,9 @@ static MagickBooleanType WritePixelCacheMetacontent(CacheInfo *cache_info, nexus_info->region.x; length=(MagickSizeType) nexus_info->region.width* cache_info->metacontent_extent; - rows=nexus_info->region.height; - extent=(MagickSizeType) length*rows; + extent=(MagickSizeType) length*nexus_info->region.height; + region=nexus_info->region; + y=0; p=(unsigned char *) nexus_info->metacontent; switch (cache_info->type) { @@ -5397,11 +5373,11 @@ static MagickBooleanType WritePixelCacheMetacontent(CacheInfo *cache_info, (extent == (MagickSizeType) ((size_t) extent))) { length=extent; - rows=1UL; + region.height=1UL; } q=(unsigned char *) cache_info->metacontent+offset* cache_info->metacontent_extent; - for (y=0; y < (ssize_t) rows; y++) + for (y=0; y < (ssize_t) region.height; y++) { (void) memcpy(q,p,(size_t) length); p+=nexus_info->region.width*cache_info->metacontent_extent; @@ -5426,15 +5402,15 @@ static MagickBooleanType WritePixelCacheMetacontent(CacheInfo *cache_info, (extent <= MagickMaxBufferExtent)) { length=extent; - rows=1UL; + region.height=1UL; } extent=(MagickSizeType) cache_info->columns*cache_info->rows; - for (y=0; y < (ssize_t) rows; y++) + for (y=0; y < (ssize_t) region.height; y++) { count=WritePixelCacheRegion(cache_info,cache_info->offset+extent* cache_info->number_channels*sizeof(Quantum)+offset* cache_info->metacontent_extent,length,(const unsigned char *) p); - if ((MagickSizeType) count != length) + if (count != (MagickOffsetType) length) break; p+=cache_info->metacontent_extent*nexus_info->region.width; offset+=cache_info->columns; @@ -5442,50 +5418,36 @@ static MagickBooleanType WritePixelCacheMetacontent(CacheInfo *cache_info, if (IsFileDescriptorLimitExceeded() != MagickFalse) (void) ClosePixelCacheOnDisk(cache_info); UnlockSemaphoreInfo(cache_info->file_semaphore); - if (y < (ssize_t) rows) - { - ThrowFileException(exception,CacheError,"UnableToWritePixelCache", - cache_info->cache_filename); - return(MagickFalse); - } break; } case DistributedCache: { - MagickBooleanType - status; - - RectangleInfo - region; - /* Write metacontent to distributed cache. */ LockSemaphoreInfo(cache_info->file_semaphore); - region=nexus_info->region; - region.height=1; - status=MagickTrue; - for (y=0; y < (ssize_t) rows; y++) + region.height=1UL; + for (y=0; y < (ssize_t) region.height; y++) { - status=WriteDistributePixelCachePixels(cache_info->server_info,®ion, + count=WriteDistributePixelCachePixels(cache_info->server_info,®ion, length,(const unsigned char *) p); - if (status == MagickFalse) + if (count != (MagickOffsetType) length) break; p+=cache_info->metacontent_extent*nexus_info->region.width; region.y++; } UnlockSemaphoreInfo(cache_info->file_semaphore); - if (status == MagickFalse) - { - ThrowFileException(exception,CacheError,"UnableToWritePixelCache", - cache_info->cache_filename); - return(MagickFalse); - } break; } default: break; } + if (y < (ssize_t) region.height) + { + ThrowFileException(exception,CacheError,"UnableToWritePixelCache", + cache_info->cache_filename); + return(MagickFalse); + } if ((cache_info->debug != MagickFalse) && (CacheTick(nexus_info->region.y,cache_info->rows) != MagickFalse)) (void) LogMagickEvent(CacheEvent,GetMagickModule(), @@ -5534,23 +5496,24 @@ static MagickBooleanType WritePixelCachePixels(CacheInfo *cache_info, extent, length; + RectangleInfo + region; + register const Quantum *restrict p; register ssize_t y; - size_t - rows; - if (IsPixelAuthentic(cache_info,nexus_info) != MagickFalse) return(MagickTrue); offset=(MagickOffsetType) nexus_info->region.y*cache_info->columns+ nexus_info->region.x; length=(MagickSizeType) cache_info->number_channels*nexus_info->region.width* sizeof(Quantum); - rows=nexus_info->region.height; - extent=length*rows; + extent=length*nexus_info->region.height; + region=nexus_info->region; + y=0; p=nexus_info->pixels; switch (cache_info->type) { @@ -5567,10 +5530,10 @@ static MagickBooleanType WritePixelCachePixels(CacheInfo *cache_info, (extent == (MagickSizeType) ((size_t) extent))) { length=extent; - rows=1UL; + region.height=1UL; } q=cache_info->pixels+offset*cache_info->number_channels; - for (y=0; y < (ssize_t) rows; y++) + for (y=0; y < (ssize_t) region.height; y++) { (void) memcpy(q,p,(size_t) length); p+=cache_info->number_channels*nexus_info->region.width; @@ -5595,14 +5558,14 @@ static MagickBooleanType WritePixelCachePixels(CacheInfo *cache_info, (extent <= MagickMaxBufferExtent)) { length=extent; - rows=1UL; + region.height=1UL; } - for (y=0; y < (ssize_t) rows; y++) + for (y=0; y < (ssize_t) region.height; y++) { count=WritePixelCacheRegion(cache_info,cache_info->offset+offset* cache_info->number_channels*sizeof(*p),length,(const unsigned char *) p); - if ((MagickSizeType) count != length) + if (count != (MagickOffsetType) length) break; p+=cache_info->number_channels*nexus_info->region.width; offset+=cache_info->columns; @@ -5610,50 +5573,36 @@ static MagickBooleanType WritePixelCachePixels(CacheInfo *cache_info, if (IsFileDescriptorLimitExceeded() != MagickFalse) (void) ClosePixelCacheOnDisk(cache_info); UnlockSemaphoreInfo(cache_info->file_semaphore); - if (y < (ssize_t) rows) - { - ThrowFileException(exception,CacheError,"UnableToWritePixelCache", - cache_info->cache_filename); - return(MagickFalse); - } break; } case DistributedCache: { - MagickBooleanType - status; - - RectangleInfo - region; - /* Write pixels to distributed cache. */ LockSemaphoreInfo(cache_info->file_semaphore); - region=nexus_info->region; - region.height=1; - status=MagickTrue; - for (y=0; y < (ssize_t) rows; y++) + region.height=1UL; + for (y=0; y < (ssize_t) region.height; y++) { - status=WriteDistributePixelCachePixels(cache_info->server_info,®ion, + count=WriteDistributePixelCachePixels(cache_info->server_info,®ion, length,(const unsigned char *) p); - if (status == MagickFalse) + if (count != (MagickOffsetType) length) break; p+=cache_info->number_channels*nexus_info->region.width; region.y++; } UnlockSemaphoreInfo(cache_info->file_semaphore); - if (status == MagickFalse) - { - ThrowFileException(exception,CacheError,"UnableToWritePixelCache", - cache_info->cache_filename); - return(MagickFalse); - } break; } default: break; } + if (y < (ssize_t) region.height) + { + ThrowFileException(exception,CacheError,"UnableToWritePixelCache", + cache_info->cache_filename); + return(MagickFalse); + } if ((cache_info->debug != MagickFalse) && (CacheTick(nexus_info->region.y,cache_info->rows) != MagickFalse)) (void) LogMagickEvent(CacheEvent,GetMagickModule(), diff --git a/MagickCore/distribute-cache-private.h b/MagickCore/distribute-cache-private.h index 0f9e1dc3f..36a6a5717 100644 --- a/MagickCore/distribute-cache-private.h +++ b/MagickCore/distribute-cache-private.h @@ -56,11 +56,13 @@ extern MagickPrivate int extern MagickPrivate MagickBooleanType OpenDistributePixelCache(DistributeCacheInfo *,Image *), + RelinquishDistributePixelCache(DistributeCacheInfo *); + +extern MagickPrivate MagickOffsetType ReadDistributePixelCacheMetacontent(DistributeCacheInfo *, const RectangleInfo *,const MagickSizeType,unsigned char *), ReadDistributePixelCachePixels(DistributeCacheInfo *,const RectangleInfo *, const MagickSizeType,unsigned char *), - RelinquishDistributePixelCache(DistributeCacheInfo *), WriteDistributePixelCacheMetacontent(DistributeCacheInfo *, const RectangleInfo *,const MagickSizeType,const unsigned char *), WriteDistributePixelCachePixels(DistributeCacheInfo *,const RectangleInfo *, diff --git a/MagickCore/distribute-cache.c b/MagickCore/distribute-cache.c index 9a1c76ad5..1c930ae85 100644 --- a/MagickCore/distribute-cache.c +++ b/MagickCore/distribute-cache.c @@ -991,7 +991,7 @@ MagickPrivate MagickBooleanType OpenDistributePixelCache( % % The format of the ReadDistributePixelCacheMetacontents method is: % -% MagickBooleanType *ReadDistributePixelCacheMetacontents( +% MagickOffsetType ReadDistributePixelCacheMetacontents( % DistributeCacheInfo *server_info,const RectangleInfo *region, % const MagickSizeType length,unsigned char *metacontent) % @@ -1008,19 +1008,19 @@ MagickPrivate MagickBooleanType OpenDistributePixelCache( % o metacontent: read these metacontent from the pixel cache. % */ -MagickPrivate MagickBooleanType ReadDistributePixelCacheMetacontent( +MagickPrivate MagickOffsetType ReadDistributePixelCacheMetacontent( DistributeCacheInfo *server_info,const RectangleInfo *region, const MagickSizeType length,unsigned char *metacontent) { MagickBooleanType status; + MagickOffsetType + count; + register unsigned char *p; - ssize_t - count; - unsigned char buffer[MaxTextExtent]; @@ -1028,7 +1028,8 @@ MagickPrivate MagickBooleanType ReadDistributePixelCacheMetacontent( assert(server_info->signature == MagickSignature); assert(region != (RectangleInfo *) NULL); assert(metacontent != (unsigned char *) NULL); - assert(length == ((size_t) length)); + if (length != (size_t) length) + return(-1); p=buffer; *p++='R'; /* read */ (void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key)); @@ -1043,16 +1044,17 @@ MagickPrivate MagickBooleanType ReadDistributePixelCacheMetacontent( p+=sizeof(region->y); (void) memcpy(p,&length,sizeof(length)); p+=sizeof(length); - count=send(server_info->file,buffer,p-buffer,0); - if (count != (ssize_t) (p-buffer)) - return(MagickFalse); - count=recv(server_info->file,(unsigned char *) metacontent,(size_t) length,0); - if (count != (ssize_t) length) - return(MagickFalse); - count=recv(server_info->file,&status,sizeof(status),0); - if (count != (ssize_t) sizeof(status)) - return(MagickFalse); - return(status != 0 ? MagickTrue : MagickFalse); + count=(MagickOffsetType) send(server_info->file,buffer,p-buffer,0); + if (count != (MagickOffsetType) (p-buffer)) + return(-1); + count=(MagickOffsetType) recv(server_info->file,(unsigned char *) metacontent, + (size_t) length,0); + if (count != (MagickOffsetType) length) + return(count); + count=(MagickOffsetType) recv(server_info->file,&status,sizeof(status),0); + if (count != (MagickOffsetType) sizeof(status)) + return(-1); + return((MagickOffsetType) length); } /* @@ -1071,7 +1073,7 @@ MagickPrivate MagickBooleanType ReadDistributePixelCacheMetacontent( % % The format of the ReadDistributePixelCachePixels method is: % -% MagickBooleanType *ReadDistributePixelCachePixels( +% MagickOffsetType ReadDistributePixelCachePixels( % DistributeCacheInfo *server_info,const RectangleInfo *region, % const MagickSizeType length,unsigned char *pixels) % @@ -1088,19 +1090,19 @@ MagickPrivate MagickBooleanType ReadDistributePixelCacheMetacontent( % o pixels: read these pixels from the pixel cache. % */ -MagickPrivate MagickBooleanType ReadDistributePixelCachePixels( +MagickPrivate MagickOffsetType ReadDistributePixelCachePixels( DistributeCacheInfo *server_info,const RectangleInfo *region, const MagickSizeType length,unsigned char *pixels) { MagickBooleanType status; + MagickOffsetType + count; + register unsigned char *p; - ssize_t - count; - unsigned char buffer[MaxTextExtent]; @@ -1108,7 +1110,8 @@ MagickPrivate MagickBooleanType ReadDistributePixelCachePixels( assert(server_info->signature == MagickSignature); assert(region != (RectangleInfo *) NULL); assert(pixels != (unsigned char *) NULL); - assert(length == ((size_t) length)); + if (length != (size_t) length) + return(-1); p=buffer; *p++='r'; /* read */ (void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key)); @@ -1123,16 +1126,17 @@ MagickPrivate MagickBooleanType ReadDistributePixelCachePixels( p+=sizeof(region->y); (void) memcpy(p,&length,sizeof(length)); p+=sizeof(length); - count=send(server_info->file,buffer,p-buffer,0); - if (count != (ssize_t) (p-buffer)) - return(MagickFalse); - count=recv(server_info->file,(unsigned char *) pixels,(size_t) length,0); - if (count != (ssize_t) length) - return(MagickFalse); + count=(MagickOffsetType) send(server_info->file,buffer,p-buffer,0); + if (count != (MagickOffsetType) (p-buffer)) + return(-1); + count=(MagickOffsetType) recv(server_info->file,(unsigned char *) pixels, + (size_t) length,0); + if (count != (MagickOffsetType) length) + return(count); count=recv(server_info->file,&status,sizeof(status),0); - if (count != (ssize_t) sizeof(status)) - return(MagickFalse); - return(status != 0 ? MagickTrue : MagickFalse); + if (count != (MagickOffsetType) sizeof(status)) + return(-1); + return((MagickOffsetType) length); } /* @@ -1197,10 +1201,9 @@ MagickPrivate MagickBooleanType RelinquishDistributePixelCache( % WriteDistributePixelCacheMetacontents() writes image metacontent to the % specified region of the distributed pixel cache. % -% % The format of the WriteDistributePixelCacheMetacontents method is: % -% MagickBooleanType *WriteDistributePixelCacheMetacontents( +% MagickOffsetType WriteDistributePixelCacheMetacontents( % DistributeCacheInfo *server_info,const RectangleInfo *region, % const MagickSizeType length,const unsigned char *metacontent) % @@ -1217,19 +1220,19 @@ MagickPrivate MagickBooleanType RelinquishDistributePixelCache( % o metacontent: write these metacontent to the pixel cache. % */ -MagickPrivate MagickBooleanType WriteDistributePixelCacheMetacontent( +MagickPrivate MagickOffsetType WriteDistributePixelCacheMetacontent( DistributeCacheInfo *server_info,const RectangleInfo *region, const MagickSizeType length,const unsigned char *metacontent) { MagickBooleanType status; + MagickOffsetType + count; + register unsigned char *p; - ssize_t - count; - unsigned char buffer[MaxTextExtent]; @@ -1237,7 +1240,8 @@ MagickPrivate MagickBooleanType WriteDistributePixelCacheMetacontent( assert(server_info->signature == MagickSignature); assert(region != (RectangleInfo *) NULL); assert(metacontent != (unsigned char *) NULL); - assert(length == ((size_t) length)); + if (length != (size_t) length) + return(-1); p=buffer; *p++='W'; /* write */ (void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key)); @@ -1252,17 +1256,17 @@ MagickPrivate MagickBooleanType WriteDistributePixelCacheMetacontent( p+=sizeof(region->y); (void) memcpy(p,&length,sizeof(length)); p+=sizeof(length); - count=send(server_info->file,buffer,p-buffer,0); - if (count != (ssize_t) (p-buffer)) - return(MagickFalse); - count=send(server_info->file,(unsigned char *) metacontent,(size_t) - length,0); + count=(MagickOffsetType) send(server_info->file,buffer,p-buffer,0); + if (count != (MagickOffsetType) (p-buffer)) + return(-1); + count=(MagickOffsetType) send(server_info->file,(unsigned char *) metacontent, + (size_t) length,0); if (count != (ssize_t) length) - return(MagickFalse); + return(count); count=recv(server_info->file,&status,sizeof(status),0); if (count != (ssize_t) sizeof(status)) - return(MagickFalse); - return(status != 0 ? MagickTrue : MagickFalse); + return(-1); + return((MagickOffsetType) length); } /* @@ -1279,10 +1283,9 @@ MagickPrivate MagickBooleanType WriteDistributePixelCacheMetacontent( % WriteDistributePixelCachePixels() writes image pixels to the specified % region of the distributed pixel cache. % -% % The format of the WriteDistributePixelCachePixels method is: % -% MagickBooleanType *WriteDistributePixelCachePixels( +% MagickBooleanType WriteDistributePixelCachePixels( % DistributeCacheInfo *server_info,const RectangleInfo *region, % const MagickSizeType length,const unsigned char *pixels) % @@ -1299,19 +1302,19 @@ MagickPrivate MagickBooleanType WriteDistributePixelCacheMetacontent( % o pixels: write these pixels to the pixel cache. % */ -MagickPrivate MagickBooleanType WriteDistributePixelCachePixels( +MagickPrivate MagickOffsetType WriteDistributePixelCachePixels( DistributeCacheInfo *server_info,const RectangleInfo *region, const MagickSizeType length,const unsigned char *pixels) { MagickBooleanType status; + MagickOffsetType + count; + register unsigned char *p; - ssize_t - count; - unsigned char buffer[MaxTextExtent]; @@ -1319,7 +1322,8 @@ MagickPrivate MagickBooleanType WriteDistributePixelCachePixels( assert(server_info->signature == MagickSignature); assert(region != (RectangleInfo *) NULL); assert(pixels != (const unsigned char *) NULL); - assert(length == ((size_t) length)); + if (length != (size_t) length) + return(-1); p=buffer; *p++='w'; /* write */ (void) memcpy(p,&server_info->session_key,sizeof(server_info->session_key)); @@ -1334,14 +1338,15 @@ MagickPrivate MagickBooleanType WriteDistributePixelCachePixels( p+=sizeof(region->y); (void) memcpy(p,&length,sizeof(length)); p+=sizeof(length); - count=send(server_info->file,buffer,p-buffer,0); - if (count != (ssize_t) (p-buffer)) - return(MagickFalse); - count=send(server_info->file,(unsigned char *) pixels,(size_t) length,0); - if (count != (ssize_t) length) - return(MagickFalse); + count=(MagickOffsetType) send(server_info->file,buffer,p-buffer,0); + if (count != (MagickOffsetType) (p-buffer)) + return(-1); + count=(MagickOffsetType) send(server_info->file,(unsigned char *) pixels, + (size_t) length,0); + if (count != (MagickOffsetType) length) + return(count); count=recv(server_info->file,&status,sizeof(status),0); if (count != (ssize_t) sizeof(status)) - return(MagickFalse); - return(status != 0 ? MagickTrue : MagickFalse); + return(-1); + return((MagickOffsetType) length); }