summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2018-08-20 20:21:56 +0200
committerHugo Locurcio <hugo.locurcio@hugo.pro>2018-08-20 20:21:56 +0200
commitdd4fe8588bcf0e99b16e45508da7dcc3a1f3bb8e (patch)
treeee81ababa1d99ce4e30c48ec543a21904aec0d75
parentc1bd768ca2d5fcd7c505b1af5e4de753799a3476 (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.
-rw-r--r--editor/plugins/asset_library_editor_plugin.cpp11
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) {