Merge pull request #5192 from jriwanek-forks/resourceleak
Some fixes to tmacm and carts
This commit is contained in:
@@ -104,6 +104,7 @@ cart_image_load(int drive, char *fn)
|
|||||||
if (size < 0x1200) {
|
if (size < 0x1200) {
|
||||||
cartridge_log("cart_image_load(): File size %i is too small\n", size);
|
cartridge_log("cart_image_load(): File size %i is too small\n", size);
|
||||||
cart_load_error(drive, fn);
|
cart_load_error(drive, fn);
|
||||||
|
fclose(fp);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (size & 0x00000fff) {
|
if (size & 0x00000fff) {
|
||||||
|
|||||||
@@ -48,6 +48,11 @@ typedef struct _gameport_ {
|
|||||||
struct _gameport_ *next;
|
struct _gameport_ *next;
|
||||||
} gameport_t;
|
} gameport_t;
|
||||||
|
|
||||||
|
typedef struct _tmacm_ {
|
||||||
|
struct gameport_t *port1;
|
||||||
|
struct gameport_t *port2;
|
||||||
|
} tmacm_t;
|
||||||
|
|
||||||
typedef struct _joystick_instance_ {
|
typedef struct _joystick_instance_ {
|
||||||
uint8_t state;
|
uint8_t state;
|
||||||
g_axis_t axis[4];
|
g_axis_t axis[4];
|
||||||
@@ -402,25 +407,24 @@ gameport_init(const device_t *info)
|
|||||||
static void *
|
static void *
|
||||||
tmacm_init(UNUSED(const device_t *info))
|
tmacm_init(UNUSED(const device_t *info))
|
||||||
{
|
{
|
||||||
uint16_t port = 0x0000;
|
uint16_t port = 0x0000;
|
||||||
gameport_t *dev = NULL;
|
tmacm_t *dev = NULL;
|
||||||
|
|
||||||
dev = malloc(sizeof(gameport_t));
|
dev = calloc(1, sizeof(tmacm_t));
|
||||||
memset(dev, 0x00, sizeof(gameport_t));
|
|
||||||
|
|
||||||
port = (uint16_t) device_get_config_hex16("port1_addr");
|
port = (uint16_t) device_get_config_hex16("port1_addr");
|
||||||
switch (port) {
|
switch (port) {
|
||||||
case 0x201:
|
case 0x201:
|
||||||
dev = gameport_add(&gameport_201_device);
|
dev->port1 = gameport_add(&gameport_201_device);
|
||||||
break;
|
break;
|
||||||
case 0x203:
|
case 0x203:
|
||||||
dev = gameport_add(&gameport_203_device);
|
dev->port1 = gameport_add(&gameport_203_device);
|
||||||
break;
|
break;
|
||||||
case 0x205:
|
case 0x205:
|
||||||
dev = gameport_add(&gameport_205_device);
|
dev->port1 = gameport_add(&gameport_205_device);
|
||||||
break;
|
break;
|
||||||
case 0x207:
|
case 0x207:
|
||||||
dev = gameport_add(&gameport_207_device);
|
dev->port1 = gameport_add(&gameport_207_device);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -429,16 +433,16 @@ tmacm_init(UNUSED(const device_t *info))
|
|||||||
port = (uint16_t) device_get_config_hex16("port2_addr");
|
port = (uint16_t) device_get_config_hex16("port2_addr");
|
||||||
switch (port) {
|
switch (port) {
|
||||||
case 0x209:
|
case 0x209:
|
||||||
dev = gameport_add(&gameport_209_device);
|
dev->port2 = gameport_add(&gameport_209_device);
|
||||||
break;
|
break;
|
||||||
case 0x20b:
|
case 0x20b:
|
||||||
dev = gameport_add(&gameport_20b_device);
|
dev->port2 = gameport_add(&gameport_20b_device);
|
||||||
break;
|
break;
|
||||||
case 0x20d:
|
case 0x20d:
|
||||||
dev = gameport_add(&gameport_20d_device);
|
dev->port2 = gameport_add(&gameport_20d_device);
|
||||||
break;
|
break;
|
||||||
case 0x20f:
|
case 0x20f:
|
||||||
dev = gameport_add(&gameport_20f_device);
|
dev->port2 = gameport_add(&gameport_20f_device);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user