mirror of https://github.com/encounter/SDL.git
wayland: Move buffer copy into mime_data_list_add()
It makes it clearer who owns the memory, and more reasonable to free it on failure in the creating function. (and, of course, pacifies static analysis.)
This commit is contained in:
parent
22da9d4d77
commit
ce7ae4ec8d
|
@ -185,8 +185,16 @@ mime_data_list_add(struct wl_list* list,
|
||||||
{
|
{
|
||||||
int status = 0;
|
int status = 0;
|
||||||
size_t mime_type_length = 0;
|
size_t mime_type_length = 0;
|
||||||
|
|
||||||
SDL_MimeDataList *mime_data = NULL;
|
SDL_MimeDataList *mime_data = NULL;
|
||||||
|
void *internal_buffer = NULL;
|
||||||
|
|
||||||
|
if (buffer != NULL) {
|
||||||
|
internal_buffer = SDL_malloc(length);
|
||||||
|
if (internal_buffer == NULL) {
|
||||||
|
return SDL_OutOfMemory();
|
||||||
|
}
|
||||||
|
SDL_memcpy(internal_buffer, buffer, length);
|
||||||
|
}
|
||||||
|
|
||||||
mime_data = mime_data_list_find(list, mime_type);
|
mime_data = mime_data_list_find(list, mime_type);
|
||||||
|
|
||||||
|
@ -211,8 +219,10 @@ mime_data_list_add(struct wl_list* list,
|
||||||
if (mime_data->data != NULL) {
|
if (mime_data->data != NULL) {
|
||||||
SDL_free(mime_data->data);
|
SDL_free(mime_data->data);
|
||||||
}
|
}
|
||||||
mime_data->data = buffer;
|
mime_data->data = internal_buffer;
|
||||||
mime_data->length = length;
|
mime_data->length = length;
|
||||||
|
} else {
|
||||||
|
SDL_free(internal_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
@ -264,18 +274,7 @@ int Wayland_data_source_add_data(SDL_WaylandDataSource *source,
|
||||||
const void *buffer,
|
const void *buffer,
|
||||||
size_t length)
|
size_t length)
|
||||||
{
|
{
|
||||||
int status = 0;
|
return mime_data_list_add(&source->mimes, mime_type, buffer, length);
|
||||||
if (length > 0) {
|
|
||||||
void *internal_buffer = SDL_malloc(length);
|
|
||||||
if (internal_buffer == NULL) {
|
|
||||||
status = SDL_OutOfMemory();
|
|
||||||
} else {
|
|
||||||
SDL_memcpy(internal_buffer, buffer, length);
|
|
||||||
status = mime_data_list_add(&source->mimes, mime_type,
|
|
||||||
internal_buffer, length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_bool
|
SDL_bool
|
||||||
|
|
Loading…
Reference in New Issue