T_IO_Context Original_file_name and Original_file_directory are now dynamically allocated
This commit is contained in:
parent
11ddd669b3
commit
9886872c8a
@ -4473,28 +4473,19 @@ void Load_GIF(T_IO_Context * context)
|
|||||||
else if (!memcmp(aeb,"GFX2PATH\x00\x00\x00",0x0B))
|
else if (!memcmp(aeb,"GFX2PATH\x00\x00\x00",0x0B))
|
||||||
{
|
{
|
||||||
// Original file path
|
// Original file path
|
||||||
if (context->Original_file_name && context->Original_file_directory)
|
Read_byte(GIF_file,&size_to_read);
|
||||||
|
if (!File_error && size_to_read > 0)
|
||||||
{
|
{
|
||||||
Read_byte(GIF_file,&size_to_read);
|
free(context->Original_file_directory);
|
||||||
if (!File_error && size_to_read)
|
context->Original_file_directory = malloc(size_to_read);
|
||||||
|
Read_bytes(GIF_file, context->Original_file_directory, size_to_read);
|
||||||
|
Read_byte(GIF_file, &size_to_read);
|
||||||
|
if (!File_error && size_to_read > 0)
|
||||||
{
|
{
|
||||||
Read_bytes(GIF_file,context->Original_file_directory, size_to_read);
|
free(context->Original_file_name);
|
||||||
Read_byte(GIF_file,&size_to_read);
|
context->Original_file_name = malloc(size_to_read);
|
||||||
if (!File_error && size_to_read)
|
Read_bytes(GIF_file, context->Original_file_name, size_to_read);
|
||||||
{
|
Read_byte(GIF_file, &size_to_read); // Normally 0
|
||||||
Read_bytes(GIF_file,context->Original_file_name, size_to_read);
|
|
||||||
Read_byte(GIF_file,&size_to_read); // Normally 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Nothing to do, just skip sub-block
|
|
||||||
Read_byte(GIF_file,&size_to_read);
|
|
||||||
while (size_to_read!=0 && !File_error)
|
|
||||||
{
|
|
||||||
fseek(GIF_file,size_to_read,SEEK_CUR);
|
|
||||||
Read_byte(GIF_file,&size_to_read);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -827,11 +827,13 @@ void Load_image(T_IO_Context *context)
|
|||||||
free(Main.backups->Pages->File_directory);
|
free(Main.backups->Pages->File_directory);
|
||||||
free(Main.backups->Pages->Filename_unicode);
|
free(Main.backups->Pages->Filename_unicode);
|
||||||
Main.backups->Pages->Filename_unicode = NULL;
|
Main.backups->Pages->Filename_unicode = NULL;
|
||||||
if (context->Original_file_name && context->Original_file_name[0]
|
if (context->Original_file_name != NULL
|
||||||
&& context->Original_file_directory && context->Original_file_directory[0])
|
&& context->Original_file_directory != NULL)
|
||||||
{
|
{
|
||||||
Main.backups->Pages->Filename = strdup(context->Original_file_name); /// @todo steal buffer !
|
Main.backups->Pages->Filename = context->Original_file_name; // steal buffer !
|
||||||
Main.backups->Pages->File_directory = strdup(context->Original_file_directory);
|
context->Original_file_name = NULL;
|
||||||
|
Main.backups->Pages->File_directory = context->Original_file_directory; // steal heap buffer
|
||||||
|
context->Original_file_directory = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1736,6 +1738,8 @@ void Destroy_context(T_IO_Context *context)
|
|||||||
free(context->File_name);
|
free(context->File_name);
|
||||||
free(context->File_name_unicode);
|
free(context->File_name_unicode);
|
||||||
free(context->File_directory);
|
free(context->File_directory);
|
||||||
|
free(context->Original_file_directory);
|
||||||
|
free(context->Original_file_name);
|
||||||
memset(context, 0, sizeof(T_IO_Context));
|
memset(context, 0, sizeof(T_IO_Context));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2006,13 +2010,9 @@ byte Process_backups(T_String_list **list)
|
|||||||
{
|
{
|
||||||
// Load this file
|
// Load this file
|
||||||
T_IO_Context context;
|
T_IO_Context context;
|
||||||
char file_name[MAX_PATH_CHARACTERS]="";
|
|
||||||
char file_directory[MAX_PATH_CHARACTERS]="";
|
|
||||||
|
|
||||||
Init_context_backup_image(&context, files_vector[i], Config_directory);
|
Init_context_backup_image(&context, files_vector[i], Config_directory);
|
||||||
// Provide buffers to read original location
|
// Provide buffers to read original location
|
||||||
context.Original_file_name = file_name;
|
|
||||||
context.Original_file_directory = file_directory;
|
|
||||||
Load_image(&context);
|
Load_image(&context);
|
||||||
Main.image_is_modified=1;
|
Main.image_is_modified=1;
|
||||||
Destroy_context(&context);
|
Destroy_context(&context);
|
||||||
@ -2126,8 +2126,8 @@ void Rotate_safety_backups(void)
|
|||||||
Init_context_backup_image(&context, file_name, Config_directory);
|
Init_context_backup_image(&context, file_name, Config_directory);
|
||||||
context.Format=FORMAT_GIF;
|
context.Format=FORMAT_GIF;
|
||||||
// Provide original file data, to store as a GIF Application Extension
|
// Provide original file data, to store as a GIF Application Extension
|
||||||
context.Original_file_name = Main.backups->Pages->Filename;
|
context.Original_file_name = strdup(Main.backups->Pages->Filename);
|
||||||
context.Original_file_directory = Main.backups->Pages->File_directory;
|
context.Original_file_directory = strdup(Main.backups->Pages->File_directory);
|
||||||
|
|
||||||
Save_image(&context);
|
Save_image(&context);
|
||||||
Destroy_context(&context);
|
Destroy_context(&context);
|
||||||
|
|||||||
@ -36,6 +36,7 @@
|
|||||||
#if _MSC_VER < 1900
|
#if _MSC_VER < 1900
|
||||||
#define snprintf _snprintf
|
#define snprintf _snprintf
|
||||||
#endif
|
#endif
|
||||||
|
#define strdup _strdup
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user