-No need to check if a pointer is null before freeing it.
-However if the pointer is still living (for example a global) you should assign NULL to it to avoid bad ram access and random bugs. Accessing a NULL pointer always gives a segfault, accessing a freed pointer may or may not crash. -Also fixed a memory leak git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@924 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
8b5681eccb
commit
07bfc119b8
21
buttons.c
21
buttons.c
@ -2735,6 +2735,8 @@ void Load_picture(byte image)
|
|||||||
use_brush_palette=Confirmation_box("Use the palette of the brush?");
|
use_brush_palette=Confirmation_box("Use the palette of the brush?");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// do_not_restore is modified inside the first if, that's why we check it
|
||||||
|
// again here
|
||||||
if (do_not_restore)
|
if (do_not_restore)
|
||||||
{
|
{
|
||||||
old_cursor_shape=Cursor_shape;
|
old_cursor_shape=Cursor_shape;
|
||||||
@ -2764,13 +2766,13 @@ void Load_picture(byte image)
|
|||||||
|
|
||||||
if (File_error==3) // On ne peut pas allouer la brosse
|
if (File_error==3) // On ne peut pas allouer la brosse
|
||||||
{
|
{
|
||||||
if (Brush) free(Brush);
|
free(Brush);
|
||||||
Brush=(byte *)malloc(1*1);
|
Brush=(byte *)malloc(1*1);
|
||||||
Brush_height=1;
|
Brush_height=1;
|
||||||
Brush_width=1;
|
Brush_width=1;
|
||||||
*Brush=Fore_color;
|
*Brush=Fore_color;
|
||||||
|
|
||||||
if (Smear_brush) free(Smear_brush);
|
free(Smear_brush);
|
||||||
Smear_brush=(byte *)malloc(MAX_PAINTBRUSH_SIZE*MAX_PAINTBRUSH_SIZE);
|
Smear_brush=(byte *)malloc(MAX_PAINTBRUSH_SIZE*MAX_PAINTBRUSH_SIZE);
|
||||||
Smear_brush_height=MAX_PAINTBRUSH_SIZE;
|
Smear_brush_height=MAX_PAINTBRUSH_SIZE;
|
||||||
Smear_brush_width=MAX_PAINTBRUSH_SIZE;
|
Smear_brush_width=MAX_PAINTBRUSH_SIZE;
|
||||||
@ -2828,7 +2830,7 @@ void Load_picture(byte image)
|
|||||||
}
|
}
|
||||||
|
|
||||||
new_mode=Best_video_mode();
|
new_mode=Best_video_mode();
|
||||||
// TODO : Utiliser içi Ratio_of_loaded_image pour passer dans la
|
// TODO : Utiliser ici Ratio_of_loaded_image pour passer dans la
|
||||||
// bonne taille de pixels.
|
// bonne taille de pixels.
|
||||||
if ((Config.Auto_set_res) && (new_mode!=Current_resolution))
|
if ((Config.Auto_set_res) && (new_mode!=Current_resolution))
|
||||||
{
|
{
|
||||||
@ -2858,7 +2860,6 @@ void Load_picture(byte image)
|
|||||||
Display_cursor();
|
Display_cursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!image)
|
|
||||||
free(initial_palette);
|
free(initial_palette);
|
||||||
|
|
||||||
if (!do_not_restore)
|
if (!do_not_restore)
|
||||||
@ -4863,10 +4864,9 @@ void Button_Sieve_menu(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 7 : // Transfer to brush
|
case 7 : // Transfer to brush
|
||||||
if (Brush)
|
|
||||||
free(Brush);
|
|
||||||
Brush_width=Sieve_width;
|
Brush_width=Sieve_width;
|
||||||
Brush_height=Sieve_height;
|
Brush_height=Sieve_height;
|
||||||
|
free(Brush);
|
||||||
Brush=(byte *)malloc(((long)Brush_height)*Brush_width);
|
Brush=(byte *)malloc(((long)Brush_height)*Brush_width);
|
||||||
for (y_pos=0; y_pos<Sieve_height; y_pos++)
|
for (y_pos=0; y_pos<Sieve_height; y_pos++)
|
||||||
for (x_pos=0; x_pos<Sieve_width; x_pos++)
|
for (x_pos=0; x_pos<Sieve_width; x_pos++)
|
||||||
@ -5505,11 +5505,8 @@ void Button_Text()
|
|||||||
const char * preview_string = "AaBbCcDdEeFf012345";
|
const char * preview_string = "AaBbCcDdEeFf012345";
|
||||||
if (str[0])
|
if (str[0])
|
||||||
preview_string=str;
|
preview_string=str;
|
||||||
if (new_brush)
|
|
||||||
{
|
|
||||||
free(new_brush);
|
|
||||||
}
|
|
||||||
Window_rectangle(8, 106, 273, 50,Back_color);
|
Window_rectangle(8, 106, 273, 50,Back_color);
|
||||||
|
free(new_brush);
|
||||||
new_brush = Render_text(preview_string, selected_font_index, font_size, antialias, is_bold, is_italic, &new_width, &new_height);
|
new_brush = Render_text(preview_string, selected_font_index, font_size, antialias, is_bold, is_italic, &new_width, &new_height);
|
||||||
if (new_brush)
|
if (new_brush)
|
||||||
{
|
{
|
||||||
@ -5636,7 +5633,7 @@ void Button_Text()
|
|||||||
Error(0);
|
Error(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Brush) free(Brush);
|
free(Brush);
|
||||||
|
|
||||||
Brush=new_brush;
|
Brush=new_brush;
|
||||||
Brush_width=new_width;
|
Brush_width=new_width;
|
||||||
@ -5670,8 +5667,8 @@ void Button_Text()
|
|||||||
list_start = font_list->List_start;
|
list_start = font_list->List_start;
|
||||||
cursor_position = font_list->Cursor_position;
|
cursor_position = font_list->Cursor_position;
|
||||||
|
|
||||||
if (new_brush)
|
|
||||||
free(new_brush);
|
free(new_brush);
|
||||||
|
new_brush = NULL;
|
||||||
Close_window();
|
Close_window();
|
||||||
Unselect_button(BUTTON_TEXT);
|
Unselect_button(BUTTON_TEXT);
|
||||||
Display_cursor();
|
Display_cursor();
|
||||||
|
|||||||
1
graph.c
1
graph.c
@ -495,7 +495,6 @@ int Init_mode_video(int width, int height, int fullscreen, int pix_ratio)
|
|||||||
else if (Pixel_width>Pixel_height && Screen_height>=Menu_factor_Y*2*200)
|
else if (Pixel_width>Pixel_height && Screen_height>=Menu_factor_Y*2*200)
|
||||||
Menu_factor_Y*=2;
|
Menu_factor_Y*=2;
|
||||||
|
|
||||||
if (Horizontal_line_buffer)
|
|
||||||
free(Horizontal_line_buffer);
|
free(Horizontal_line_buffer);
|
||||||
Horizontal_line_buffer=(byte *)malloc(Pixel_width*((Screen_width>Main_image_width)?Screen_width:Main_image_width));
|
Horizontal_line_buffer=(byte *)malloc(Pixel_width*((Screen_width>Main_image_width)?Screen_width:Main_image_width));
|
||||||
|
|
||||||
|
|||||||
@ -5483,8 +5483,8 @@ void Load_PC1(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
File_error=1;
|
File_error=1;
|
||||||
if (bufferdecomp) free(bufferdecomp);
|
free(bufferdecomp);
|
||||||
if (buffercomp) free(buffercomp);
|
free(buffercomp);
|
||||||
}
|
}
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user