remove usage of MAX_PATH_CHARACTERS in Test_MOTO() and Load_MOTO()

This commit is contained in:
Thomas Bernard 2019-01-18 18:23:30 +01:00
parent 0e0752c7d0
commit fcd17f057b
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C

View File

@ -5737,25 +5737,32 @@ void Test_MOTO(T_IO_Context * context, FILE * file)
case 8008: // 4 colors palette case 8008: // 4 colors palette
case 8032: // 16 colors palette case 8032: // 16 colors palette
{ {
char filename[MAX_PATH_CHARACTERS]; char * filename;
char path[MAX_PATH_CHARACTERS]; char * path;
char * ext; char * ext;
// Check there are both FORME and COULEUR files // Check there are both FORME and COULEUR files
strncpy(filename, context->File_name, sizeof(filename)); filename = strdup(context->File_name);
filename[sizeof(filename)-1] = '\0';
ext = strrchr(filename, '.'); ext = strrchr(filename, '.');
if (ext == NULL || ext == filename) if (ext == NULL || ext == filename)
{
free(filename);
return; return;
}
if ((ext[-1] | 32) == 'c') if ((ext[-1] | 32) == 'c')
ext[-1] = (ext[-1] & 32) | 'P'; ext[-1] = (ext[-1] & 32) | 'P';
else if ((ext[-1] | 32) == 'p') else if ((ext[-1] | 32) == 'p')
ext[-1] = (ext[-1] & 32) | 'C'; ext[-1] = (ext[-1] & 32) | 'C';
else else
{
free(filename);
return; return;
Get_full_filename(path, filename, context->File_directory); }
path = Filepath_append_to_dir(context->File_directory, filename);
if (File_exists(path)) if (File_exists(path))
File_error = 0; File_error = 0;
free(path);
free(filename);
} }
return; return;
default: default:
@ -6077,8 +6084,8 @@ void Load_MOTO(T_IO_Context * context)
} }
else else
{ {
char filename[MAX_PATH_CHARACTERS]; char * filename;
char path[MAX_PATH_CHARACTERS]; char * path;
char * ext; char * ext;
int n_colors; int n_colors;
@ -6112,12 +6119,12 @@ void Load_MOTO(T_IO_Context * context)
width = 640; width = 640;
ratio = PIXEL_TALL; ratio = PIXEL_TALL;
} }
strncpy(filename, context->File_name, sizeof(filename)); filename = strdup(context->File_name);
filename[sizeof(filename)-1] = '\0';
ext = strrchr(filename, '.'); ext = strrchr(filename, '.');
if (ext == NULL || ext == filename) if (ext == NULL || ext == filename)
{ {
free(vram_forme); free(vram_forme);
free(filename);
return; return;
} }
if ((ext[-1] | 32) == 'c') if ((ext[-1] | 32) == 'c')
@ -6139,10 +6146,15 @@ void Load_MOTO(T_IO_Context * context)
else else
{ {
free(vram_forme); free(vram_forme);
free(filename);
return; return;
} }
Get_full_filename(path, filename, context->File_directory); path = Filepath_append_to_dir(context->File_directory, filename);
file = fopen(path, "rb"); file = fopen(path, "rb");
if (file == NULL)
GFX2_Log(GFX2_ERROR, "Failed to open %s\n", path);
free(path);
free(filename);
if (vram_forme == NULL) if (vram_forme == NULL)
{ {
vram_forme = malloc(file_size); vram_forme = malloc(file_size);