From dd4fe8588bcf0e99b16e45508da7dcc3a1f3bb8e Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 20 Aug 2018 20:21:56 +0200 Subject: Fix occasional crash when downloading assets from the Asset Library This is caused by GitHub not publishing a Content-Length header in all cases (it only does so if the file was requested recently), which in turn made `String.humanize_size()` try to humanize a size of -1 byte (as returned by HTTPRequest when no Content-Length is contained in the response). This crashed the editor due to a division by zero. This closes #21200. --- editor/plugins/asset_library_editor_plugin.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'editor') diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp index 4ed2b051aa..66770d98e5 100644 --- a/editor/plugins/asset_library_editor_plugin.cpp +++ b/editor/plugins/asset_library_editor_plugin.cpp @@ -421,7 +421,16 @@ void EditorAssetLibraryItemDownload::_notification(int p_what) { int cstatus = download->get_http_client_status(); if (cstatus == HTTPClient::STATUS_BODY) { - status->set_text(vformat(TTR("Downloading (%s / %s)..."), String::humanize_size(download->get_downloaded_bytes()), String::humanize_size(download->get_body_size()))); + if (download->get_body_size() > 0) { + status->set_text( + vformat( + TTR("Downloading (%s / %s)..."), + String::humanize_size(download->get_downloaded_bytes()), + String::humanize_size(download->get_body_size()))); + } else { + // Total file size is unknown, so it cannot be displayed + status->set_text(TTR("Downloading...")); + } } if (cstatus != prev_status) { -- cgit v1.2.3