diff options
-rw-r--r-- | shell/ChangeLog | 7 | ||||
-rw-r--r-- | shell/e-storage-set-view.c | 12 |
2 files changed, 17 insertions, 2 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index 149d021697..20e61bc9d7 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,10 @@ +2001-08-23 Ettore Perazzoli <ettore@ximian.com> + + [Fix #5736, crashing when copying a message with drag and drop.] + + * e-storage-set-view.c (tree_drag_data_received): Handle NULL data + gracefully. + 2001-08-22 Ettore Perazzoli <ettore@ximian.com> * e-storage.c (e_storage_async_xfer_folder): If the remove_source diff --git a/shell/e-storage-set-view.c b/shell/e-storage-set-view.c index a49e00f3bb..8ea0b59318 100644 --- a/shell/e-storage-set-view.c +++ b/shell/e-storage-set-view.c @@ -1275,8 +1275,16 @@ tree_drag_data_received (ETree *etree, corba_data.target = selection_data->target; corba_data.bytes._release = FALSE; - corba_data.bytes._length = selection_data->length; - corba_data.bytes._buffer = selection_data->data; + + if (selection_data->data == NULL) { + /* If data is NULL the length is -1 and this would mess things + up so we handle it separately. */ + corba_data.bytes._length = 0; + corba_data.bytes._buffer = NULL; + } else { + corba_data.bytes._length = selection_data->length; + corba_data.bytes._buffer = selection_data->data; + } /* pass off the data to the component's DestinationFolderInterface */ handled = GNOME_Evolution_ShellComponentDnd_DestinationFolder_handleDrop (destination_folder_interface, |