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;
|
||||
size_t mime_type_length = 0;
|
||||
|
||||
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);
|
||||
|
||||
|
@ -211,8 +219,10 @@ mime_data_list_add(struct wl_list* list,
|
|||
if (mime_data->data != NULL) {
|
||||
SDL_free(mime_data->data);
|
||||
}
|
||||
mime_data->data = buffer;
|
||||
mime_data->data = internal_buffer;
|
||||
mime_data->length = length;
|
||||
} else {
|
||||
SDL_free(internal_buffer);
|
||||
}
|
||||
|
||||
return status;
|
||||
|
@ -264,18 +274,7 @@ int Wayland_data_source_add_data(SDL_WaylandDataSource *source,
|
|||
const void *buffer,
|
||||
size_t length)
|
||||
{
|
||||
int status = 0;
|
||||
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;
|
||||
return mime_data_list_add(&source->mimes, mime_type, buffer, length);
|
||||
}
|
||||
|
||||
SDL_bool
|
||||
|
|
Loading…
Reference in New Issue