mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-15 10:35:11 -04:00
Add module.saveBlob function for web client
Also try to avoid terminating game when invalid huffman code is read when inflating data
This commit is contained in:
parent
4072b62439
commit
68f4144cc9
@ -291,7 +291,7 @@ static int Huffman_Decode(struct InflateState* state, struct HuffmanTable* table
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger_Abort("DEFLATE - Invalid huffman code");
|
Inflate_Fail(state, INF_ERR_INVALID_CODE);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,6 +51,7 @@ enum ERRORS_ALL {
|
|||||||
/* OpenAL initing errors */
|
/* OpenAL initing errors */
|
||||||
AL_ERR_INIT_DEVICE, AL_ERR_INIT_CONTEXT,
|
AL_ERR_INIT_DEVICE, AL_ERR_INIT_CONTEXT,
|
||||||
/* Inflate errors */
|
/* Inflate errors */
|
||||||
INF_ERR_BLOCKTYPE, INF_ERR_LEN_VERIFY, INF_ERR_REPEAT_BEG, INF_ERR_REPEAT_END
|
INF_ERR_BLOCKTYPE, INF_ERR_LEN_VERIFY, INF_ERR_REPEAT_BEG, INF_ERR_REPEAT_END,
|
||||||
|
INF_ERR_INVALID_CODE
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
18
src/Menus.c
18
src/Menus.c
@ -1272,23 +1272,7 @@ static void DownloadMap(const String* path) {
|
|||||||
var data = HEAPU8.subarray($1, $1 + $2);
|
var data = HEAPU8.subarray($1, $1 + $2);
|
||||||
var blob = new Blob([data], { type: 'application/octet-stream' });
|
var blob = new Blob([data], { type: 'application/octet-stream' });
|
||||||
var name = UTF8ToString($0);
|
var name = UTF8ToString($0);
|
||||||
|
Module.saveBlob(blob, name);
|
||||||
if (window.navigator.msSaveBlob) {
|
|
||||||
window.navigator.msSaveBlob(blob, name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var url = window.URL.createObjectURL(blob);
|
|
||||||
var elem = document.createElement('a');
|
|
||||||
|
|
||||||
elem.href = url;
|
|
||||||
elem.download = name;
|
|
||||||
elem.style.display = 'none';
|
|
||||||
|
|
||||||
document.body.appendChild(elem);
|
|
||||||
elem.click();
|
|
||||||
document.body.removeChild(elem);
|
|
||||||
window.URL.revokeObjectURL(url);
|
|
||||||
}, str, ptr, len);
|
}, str, ptr, len);
|
||||||
|
|
||||||
Chat_Add1("&eDownloaded map: %s", &file);
|
Chat_Add1("&eDownloaded map: %s", &file);
|
||||||
|
@ -1659,6 +1659,25 @@ void Platform_Init(void) {
|
|||||||
/* Check if an error occurred when pre-loading IndexedDB */
|
/* Check if an error occurred when pre-loading IndexedDB */
|
||||||
EM_ASM_({ if (window.cc_idbErr) stringToUTF8(window.cc_idbErr, $0, 64); }, tmp);
|
EM_ASM_({ if (window.cc_idbErr) stringToUTF8(window.cc_idbErr, $0, 64); }, tmp);
|
||||||
|
|
||||||
|
EM_ASM({
|
||||||
|
Module.saveBlob = function(blob, name) {
|
||||||
|
if (window.navigator.msSaveBlob) {
|
||||||
|
window.navigator.msSaveBlob(blob, name); return;
|
||||||
|
}
|
||||||
|
var url = window.URL.createObjectURL(blob);
|
||||||
|
var elem = document.createElement('a');
|
||||||
|
|
||||||
|
elem.href = url;
|
||||||
|
elem.download = name;
|
||||||
|
elem.style.display = 'none';
|
||||||
|
|
||||||
|
document.body.appendChild(elem);
|
||||||
|
elem.click();
|
||||||
|
document.body.removeChild(elem);
|
||||||
|
window.URL.revokeObjectURL(url);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (!tmp[0]) return;
|
if (!tmp[0]) return;
|
||||||
Chat_Add1("&cError preloading IndexedDB: %c", tmp);
|
Chat_Add1("&cError preloading IndexedDB: %c", tmp);
|
||||||
Chat_AddRaw("&cPreviously saved settings/maps will be lost");
|
Chat_AddRaw("&cPreviously saved settings/maps will be lost");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user