Rewrite path from nbio struct

This commit is contained in:
twinaphex 2017-09-29 22:16:17 +02:00
parent 35376a7961
commit 127d98fb68
3 changed files with 24 additions and 10 deletions

View File

@ -23,6 +23,7 @@
#include <file/nbio.h> #include <file/nbio.h>
#include <audio/audio_mixer.h> #include <audio/audio_mixer.h>
#include <compat/strl.h> #include <compat/strl.h>
#include <string/stdstring.h>
#include <retro_miscellaneous.h> #include <retro_miscellaneous.h>
#include "../audio/audio_driver.h" #include "../audio/audio_driver.h"
@ -52,6 +53,8 @@ static void task_audio_mixer_load_free(retro_task_t *task)
free(image->buffer); free(image->buffer);
} }
if (nbio->path && !string_is_empty(nbio->path))
free(nbio->path);
if (nbio->data) if (nbio->data)
free(nbio->data); free(nbio->data);
nbio_free(nbio->handle); nbio_free(nbio->handle);
@ -188,7 +191,7 @@ bool task_push_audio_mixer_load(const char *fullpath, retro_task_callback_t cb,
if (!nbio) if (!nbio)
goto error; goto error;
strlcpy(nbio->path, fullpath, sizeof(nbio->path)); nbio->path = strdup(fullpath);
image = (struct audio_mixer_handle*)calloc(1, sizeof(*image)); image = (struct audio_mixer_handle*)calloc(1, sizeof(*image));
if (!image) if (!image)
@ -239,6 +242,8 @@ bool task_push_audio_mixer_load(const char *fullpath, retro_task_callback_t cb,
error: error:
if (nbio) if (nbio)
{ {
if (nbio->path && !string_is_empty(nbio->path))
free(nbio->path);
if (nbio->data) if (nbio->data)
free(nbio->data); free(nbio->data);
nbio_free(nbio->handle); nbio_free(nbio->handle);

View File

@ -21,6 +21,7 @@
#include <file/nbio.h> #include <file/nbio.h>
#include <formats/image.h> #include <formats/image.h>
#include <compat/strl.h> #include <compat/strl.h>
#include <string/stdstring.h>
#include <retro_miscellaneous.h> #include <retro_miscellaneous.h>
#include "../gfx/video_driver.h" #include "../gfx/video_driver.h"
@ -157,9 +158,12 @@ static void task_image_cleanup(nbio_handle_t *nbio)
image->handle = NULL; image->handle = NULL;
image->cb = NULL; image->cb = NULL;
} }
if (nbio->path && !string_is_empty(nbio->path))
free(nbio->path);
if (nbio->data) if (nbio->data)
free(nbio->data); free(nbio->data);
nbio_free(nbio->handle); nbio_free(nbio->handle);
nbio->path = NULL;
nbio->data = NULL; nbio->data = NULL;
nbio->handle = NULL; nbio->handle = NULL;
} }
@ -296,7 +300,7 @@ bool task_push_image_load(const char *fullpath, retro_task_callback_t cb, void *
if (!nbio) if (!nbio)
goto error; goto error;
strlcpy(nbio->path, fullpath, sizeof(nbio->path)); nbio->path = strdup(fullpath);
if (video_driver_supports_rgba()) if (video_driver_supports_rgba())
BIT32_SET(nbio->status_flags, NBIO_FLAG_IMAGE_SUPPORTS_RGBA); BIT32_SET(nbio->status_flags, NBIO_FLAG_IMAGE_SUPPORTS_RGBA);
@ -352,7 +356,12 @@ error:
task_image_load_free(t); task_image_load_free(t);
free(t); free(t);
if (nbio) if (nbio)
{
if (nbio->path
&& !string_is_empty(nbio->path))
free(nbio->path);
free(nbio); free(nbio);
}
error_msg: error_msg:
RARCH_ERR("[image load] Failed to open '%s': %s.\n", RARCH_ERR("[image load] Failed to open '%s': %s.\n",

View File

@ -81,15 +81,15 @@ enum nbio_type
typedef struct nbio_handle typedef struct nbio_handle
{ {
enum nbio_type type; enum nbio_type type;
void *data;
bool is_finished; bool is_finished;
transfer_cb_t cb;
struct nbio_t *handle;
unsigned pos_increment;
msg_queue_t *msg_queue;
unsigned status; unsigned status;
unsigned pos_increment;
uint32_t status_flags; uint32_t status_flags;
char path[4096]; void *data;
char *path;
struct nbio_t *handle;
msg_queue_t *msg_queue;
transfer_cb_t cb;
} nbio_handle_t; } nbio_handle_t;
#ifdef HAVE_NETWORKING #ifdef HAVE_NETWORKING