|
@@ -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
|