]> granicus.if.org Git - imagemagick/commitdiff
Reduce memory used by StringInfo.
authordirk <dirk@git.imagemagick.org>
Tue, 14 Apr 2015 20:17:56 +0000 (20:17 +0000)
committerdirk <dirk@git.imagemagick.org>
Tue, 14 Apr 2015 20:17:56 +0000 (20:17 +0000)
MagickCore/string.c
MagickCore/string_.h

index 112018ebc5bdc6f8f0a711509fb2c025669f8f4b..31efea837d682c2ba23edf242430ad455af21c82 100644 (file)
@@ -646,7 +646,7 @@ MagickExport StringInfo *ConfigureFileToStringInfo(const char *filename)
   string[length]='\0';
   file=close(file)-1;
   string_info=AcquireStringInfo(0);
-  (void) CopyMagickString(string_info->path,filename,MaxTextExtent);
+  string_info->path=ConstantString(filename);
   string_info->length=length;
   if (string_info->datum != (unsigned char *) NULL)
     string_info->datum=(unsigned char *) RelinquishMagickMemory(
@@ -840,6 +840,8 @@ MagickExport StringInfo *DestroyStringInfo(StringInfo *string_info)
   if (string_info->datum != (unsigned char *) NULL)
     string_info->datum=(unsigned char *) RelinquishMagickMemory(
       string_info->datum);
+  if (string_info->path != (char *) NULL)
+    string_info->path=(char *) RelinquishMagickMemory(string_info->path);
   string_info->signature=(~MagickSignature);
   string_info=(StringInfo *) RelinquishMagickMemory(string_info);
   return(string_info);
@@ -1025,11 +1027,12 @@ MagickExport StringInfo *FileToStringInfo(const char *filename,
   (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",filename);
   assert(exception != (ExceptionInfo *) NULL);
   string_info=AcquireStringInfo(0);
-  (void) CopyMagickString(string_info->path,filename,MaxTextExtent);
+  string_info->path=ConstantString(filename);
   if (string_info->datum != (unsigned char *) NULL)
     string_info->datum=(unsigned char *) RelinquishMagickMemory(
       string_info->datum);
-  string_info->datum=FileToBlob(filename,extent,&string_info->length,exception);
+  string_info->datum=(unsigned char *) FileToBlob(filename,extent,
+    &string_info->length,exception);
   if (string_info->datum == (unsigned char *) NULL)
     {
       string_info=DestroyStringInfo(string_info);
@@ -1959,7 +1962,7 @@ MagickExport void SetStringInfoPath(StringInfo *string_info,const char *path)
   assert(string_info != (StringInfo *) NULL);
   assert(string_info->signature == MagickSignature);
   assert(path != (const char *) NULL);
-  (void) CopyMagickString(string_info->path,path,MaxTextExtent);
+  string_info->path=ConstantString(path);
 }
 \f
 /*
index 6c17c40bc05ebf774381fab28f7d742018e4b871..efb8eef16e63ee5ca06aa21dbbe57bbe7cbf2478 100644 (file)
@@ -27,7 +27,7 @@ extern "C" {
 typedef struct _StringInfo
 {
   char
-    path[MaxTextExtent];
+    *path;
 
   unsigned char
     *datum;