]> granicus.if.org Git - imagemagick/commitdiff
Fixed acquire and release of resources.
authorDirk Lemstra <dirk@git.imagemagick.org>
Fri, 3 Nov 2017 06:51:04 +0000 (07:51 +0100)
committerDirk Lemstra <dirk@git.imagemagick.org>
Fri, 3 Nov 2017 20:23:44 +0000 (21:23 +0100)
MagickCore/matrix.c

index be0b32eb0c1f03727cfab77bbf9a1a40d8ccd2e6..6b369b0680bb8f415e84054cd47ce26f3286c52b 100644 (file)
@@ -263,7 +263,6 @@ MagickExport MatrixInfo *AcquireMatrixInfo(const size_t columns,
           return(DestroyMatrixInfo(matrix_info));
         }
       matrix_info->type=DiskCache;
-      (void) AcquireMagickResource(MemoryResource,matrix_info->length);
       matrix_info->file=AcquireUniqueFileResource(matrix_info->path);
       if (matrix_info->file == -1)
         return(DestroyMatrixInfo(matrix_info));
@@ -272,14 +271,15 @@ MagickExport MatrixInfo *AcquireMatrixInfo(const size_t columns,
         {
           status=SetMatrixExtent(matrix_info,matrix_info->length);
           if (status != MagickFalse)
+            matrix_info->elements=(void *) MapBlob(matrix_info->file,IOMode,0,
+              (size_t) matrix_info->length);
+          if (matrix_info->elements != NULL)
             {
-              matrix_info->elements=(void *) MapBlob(matrix_info->file,IOMode,0,
-                (size_t) matrix_info->length);
-              if (matrix_info->elements != NULL)
-                matrix_info->type=MapCache;
-              else
-                RelinquishMagickResource(MapResource,matrix_info->length);
+              RelinquishMagickResource(DiskResource,matrix_info->length);
+              matrix_info->type=MapCache;
             }
+          else
+            RelinquishMagickResource(MapResource,matrix_info->length);
         }
     }
   return(matrix_info);