diff options
author | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2018-08-20 20:21:56 +0200 |
---|---|---|
committer | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2018-08-20 20:21:56 +0200 |
commit | dd4fe8588bcf0e99b16e45508da7dcc3a1f3bb8e (patch) | |
tree | ee81ababa1d99ce4e30c48ec543a21904aec0d75 /editor | |
parent | c1bd768ca2d5fcd7c505b1af5e4de753799a3476 (diff) |
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.
Diffstat (limited to 'editor')
-rw-r--r-- | editor/plugins/asset_library_editor_plugin.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
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) { |