screen: don't leak memory and don't crash if failed to adjust for new screen size
This commit is contained in:
parent
a75f4a1496
commit
51d43a6989
|
@ -83,14 +83,20 @@ void
|
|||
screen_resize(Uint16 width, Uint16 height)
|
||||
{
|
||||
Uint8 *bg, *fg;
|
||||
Uint32 *pixels;
|
||||
Uint32 *pixels = NULL;
|
||||
if(width < 0x8 || height < 0x8 || width >= 0x400 || height >= 0x400)
|
||||
return;
|
||||
bg = realloc(uxn_screen.bg, width * height),
|
||||
fg = realloc(uxn_screen.fg, width * height);
|
||||
pixels = realloc(uxn_screen.pixels, width * height * sizeof(Uint32));
|
||||
if(!bg || !fg || !pixels)
|
||||
bg = malloc(width * height),
|
||||
fg = malloc(width * height);
|
||||
if(bg && fg)
|
||||
pixels = realloc(uxn_screen.pixels, width * height * sizeof(Uint32));
|
||||
if(!bg || !fg || !pixels) {
|
||||
free(bg);
|
||||
free(fg);
|
||||
return;
|
||||
}
|
||||
free(uxn_screen.bg);
|
||||
free(uxn_screen.fg);
|
||||
uxn_screen.bg = bg;
|
||||
uxn_screen.fg = fg;
|
||||
uxn_screen.pixels = pixels;
|
||||
|
|
|
@ -293,7 +293,7 @@ capture_screen(void)
|
|||
return;
|
||||
SDL_RenderReadPixels(emu_renderer, NULL, format, surface->pixels, surface->pitch);
|
||||
strftime(fname, sizeof(fname), "screenshot-%Y%m%d-%H%M%S.bmp", localtime(&t));
|
||||
if(SDL_SaveBMP(surface, fname) == 0){
|
||||
if(SDL_SaveBMP(surface, fname) == 0) {
|
||||
fprintf(stderr, "Saved %s\n", fname);
|
||||
fflush(stderr);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue