Use stack-allocated image objects

This commit is contained in:
XANTRONIX Development 2021-11-28 12:17:24 -05:00
parent 9a61c3dbf6
commit d5158d2738

View file

@ -46,7 +46,7 @@ static void import_usage(int argc, char **argv, const char *message, ...) {
int cammy_tile_import(int argc, char **argv) { int cammy_tile_import(int argc, char **argv) {
cammy_sram *sram; cammy_sram *sram;
cammy_image *dest, *src; cammy_image dest, *src;
int photo; int photo;
cammy_image_point to = { cammy_image_point to = {
@ -87,18 +87,12 @@ int cammy_tile_import(int argc, char **argv) {
goto error_image_open_tile; goto error_image_open_tile;
} }
if ((dest = malloc(sizeof(*dest))) == NULL) { dest.format = CAMMY_IMAGE_2BPP_TILE;
goto error_malloc_dest; dest.tiles = (cammy_tile *)&sram->data->photos[photo-1].tiles;
} dest.width = CAMMY_PHOTO_WIDTH;
dest.height = CAMMY_PHOTO_HEIGHT;
dest->format = CAMMY_IMAGE_2BPP_TILE; cammy_image_copy(&dest, src, &to, &from);
dest->tiles = (cammy_tile *)&sram->data->photos[photo-1].tiles;
dest->width = CAMMY_PHOTO_WIDTH;
dest->height = CAMMY_PHOTO_HEIGHT;
cammy_image_copy(dest, src, &to, &from);
free(dest);
cammy_image_close(src); cammy_image_close(src);
@ -106,9 +100,6 @@ int cammy_tile_import(int argc, char **argv) {
return 0; return 0;
error_malloc_dest:
cammy_image_close(src);
error_image_open_tile: error_image_open_tile:
cammy_sram_close(sram); cammy_sram_close(sram);
@ -136,7 +127,7 @@ static void export_usage(int argc, char **argv, const char *message, ...) {
int cammy_tile_export(int argc, char **argv) { int cammy_tile_export(int argc, char **argv) {
cammy_sram *sram; cammy_sram *sram;
cammy_image *dest, *src; cammy_image *dest, src;
int photo; int photo;
cammy_image_point to = { cammy_image_point to = {
@ -169,18 +160,11 @@ int cammy_tile_export(int argc, char **argv) {
goto error_sram_open; goto error_sram_open;
} }
if ((src = malloc(sizeof(*src))) == NULL) { src.format = CAMMY_IMAGE_2BPP_TILE;
fprintf(stderr, "%s: %s: %s\n", src.size = CAMMY_PHOTO_SIZE;
argv[0], "malloc()", strerror(errno)); src.width = CAMMY_PHOTO_WIDTH;
src.height = CAMMY_PHOTO_HEIGHT;
goto error_malloc_src; src.tiles = (cammy_tile *)&sram->data->photos[photo-1].tiles;
}
src->format = CAMMY_IMAGE_2BPP_TILE;
src->size = CAMMY_PHOTO_SIZE;
src->width = CAMMY_PHOTO_WIDTH;
src->height = CAMMY_PHOTO_HEIGHT;
src->tiles = (cammy_tile *)&sram->data->photos[photo-1].tiles;
if ((dest = cammy_image_new(CAMMY_IMAGE_2BPP_TILE, if ((dest = cammy_image_new(CAMMY_IMAGE_2BPP_TILE,
CAMMY_SCREEN_WIDTH, CAMMY_SCREEN_WIDTH,
@ -193,7 +177,7 @@ int cammy_tile_export(int argc, char **argv) {
memset(dest->buf, '\0', dest->size); memset(dest->buf, '\0', dest->size);
cammy_image_copy(dest, src, &to, &from); cammy_image_copy(dest, &src, &to, &from);
if (cammy_image_save_tile(dest, argv[4]) < 0) { if (cammy_image_save_tile(dest, argv[4]) < 0) {
fprintf(stderr, "%s: %s: %s: %s\n", fprintf(stderr, "%s: %s: %s: %s\n",
@ -202,9 +186,7 @@ int cammy_tile_export(int argc, char **argv) {
goto error_image_save_tile_dest; goto error_image_save_tile_dest;
} }
free(dest); cammy_image_close(dest);
cammy_image_close(src);
cammy_sram_close(sram); cammy_sram_close(sram);
@ -214,9 +196,6 @@ error_image_save_tile_dest:
cammy_image_destroy(dest); cammy_image_destroy(dest);
error_image_new_dest: error_image_new_dest:
free(src);
error_malloc_src:
cammy_sram_close(sram); cammy_sram_close(sram);
error_sram_open: error_sram_open: