--- imagemagick-5.5.7.9.old/magick/blob.c 2003-05-23 19:26:28.000000000 +0100
+++ imagemagick-5.5.7.9/magick/blob.c 2003-12-31 19:25:41.000000000 +0000
@@ -418,7 +418,10 @@
image->blob->eof=False;
image->blob->status=status < 0;
if (image->blob->exempt)
+ {
+ DetachBlob(image->blob);
return;
+ }
switch (image->blob->type)
{
case UndefinedStream:
...in my defence, I thought the bug was in a different place entirely for much of it.
(no subject)
Date: 2003-12-31 12:25 pm (UTC)I assume you've reported this?
I assume you've reported this?
Date: 2004-01-14 03:28 pm (UTC)(no subject)
Date: 2003-12-31 04:46 pm (UTC)(no subject)
Date: 2003-12-31 05:09 pm (UTC)Later code would then have found the internals in the wrong state.
To a large extent, the library is prone to this sort of thing, being written in C while it really cries out to be in C++. Sadly, it's way too big to be easily converted. However, it's pretty damned good despite that.
(no subject)
Date: 2004-01-01 06:34 am (UTC)(no subject)
Date: 2004-01-01 08:43 am (UTC)This is where C++ virtual functions and polymorphic types would make things so much simpler. Think of the 'blob' being like a std::istream, and it could be a file, a socket, a memory buffer, a database record, something that generates data as required ... This is prety much how the ImageMagick design is done, but because it's trying to work on anything with a half-way decent C compiler rather than requiring a compliant C++ compiler, it's much gnarlier.
(no subject)
Date: 2004-01-01 08:50 am (UTC)