]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/exception.c
(no commit message)
[imagemagick] / MagickCore / exception.c
index 34a01f72c2e8d13bd2f90d4213763e77180433f3..3929ba6e3800d26fc7d0affba10776e712a50cc7 100644 (file)
 %                        MagickCore Exception Methods                         %
 %                                                                             %
 %                             Software Design                                 %
-%                               John Cristy                                   %
+%                                  Cristy                                     %
 %                                July 1993                                    %
 %                                                                             %
 %                                                                             %
-%  Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization      %
+%  Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
 %  You may not use this file except in compliance with the License.  You may  %
@@ -258,8 +258,8 @@ MagickExport ExceptionInfo *CloneExceptionInfo(ExceptionInfo *exception)
     ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
   GetExceptionInfo(clone_exception);
   InheritException(clone_exception,exception);
-  exception->relinquish=MagickTrue;
-  return(exception);
+  clone_exception->relinquish=MagickTrue;
+  return(clone_exception);
 }
 \f
 /*
@@ -414,7 +414,7 @@ MagickExport ExceptionInfo *DestroyExceptionInfo(ExceptionInfo *exception)
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
   if (exception->semaphore == (SemaphoreInfo *) NULL)
-    AcquireSemaphoreInfo(&exception->semaphore);
+    ActivateSemaphoreInfo(&exception->semaphore);
   LockSemaphoreInfo(exception->semaphore);
   exception->severity=UndefinedException;
   if (exception->exceptions != (void *) NULL)
@@ -424,7 +424,7 @@ MagickExport ExceptionInfo *DestroyExceptionInfo(ExceptionInfo *exception)
   if (exception->relinquish != MagickFalse)
     exception->signature=(~MagickSignature);
   UnlockSemaphoreInfo(exception->semaphore);
-  DestroySemaphoreInfo(&exception->semaphore);
+  RelinquishSemaphoreInfo(&exception->semaphore);
   if (relinquish != MagickFalse)
     exception=(ExceptionInfo *) RelinquishMagickMemory(exception);
   return(exception);
@@ -458,7 +458,7 @@ MagickExport void GetExceptionInfo(ExceptionInfo *exception)
   (void) ResetMagickMemory(exception,0,sizeof(*exception));
   exception->severity=UndefinedException;
   exception->exceptions=(void *) NewLinkedList(0);
-  exception->semaphore=AllocateSemaphoreInfo();
+  exception->semaphore=AcquireSemaphoreInfo();
   exception->signature=MagickSignature;
 }
 \f
@@ -939,9 +939,12 @@ MagickExport MagickBooleanType ThrowException(ExceptionInfo *exception,
     p->description=ConstantString(description);
   p->signature=MagickSignature;
   (void) AppendValueToLinkedList((LinkedListInfo *) exception->exceptions,p);
-  exception->severity=p->severity;
-  exception->reason=p->reason;
-  exception->description=p->description;
+  if (p->severity >= exception->severity)
+    {
+      exception->severity=p->severity;
+      exception->reason=p->reason;
+      exception->description=p->description;
+    }
   UnlockSemaphoreInfo(exception->semaphore);
   return(MagickTrue);
 }