mirror of
https://github.com/godotengine/godot.git
synced 2024-11-10 14:12:51 +00:00
Merge pull request #41921 from akien-mga/stb_vorbis-increase-max-alloc
stb_vorbis: Increase max alloc buffer size for big Vorbis comments
This commit is contained in:
commit
7015c59e2e
@ -158,14 +158,16 @@ void AudioStreamOGGVorbis::clear_data() {
|
||||
|
||||
void AudioStreamOGGVorbis::set_data(const Vector<uint8_t> &p_data) {
|
||||
int src_data_len = p_data.size();
|
||||
#define MAX_TEST_MEM (1 << 20)
|
||||
|
||||
uint32_t alloc_try = 1024;
|
||||
Vector<char> alloc_mem;
|
||||
char *w;
|
||||
stb_vorbis *ogg_stream = nullptr;
|
||||
stb_vorbis_alloc ogg_alloc;
|
||||
|
||||
// Vorbis comments may be up to UINT32_MAX, but that's arguably pretty rare.
|
||||
// Let's go with 2^30 so we don't risk going out of bounds.
|
||||
const uint32_t MAX_TEST_MEM = 1 << 30;
|
||||
|
||||
while (alloc_try < MAX_TEST_MEM) {
|
||||
alloc_mem.resize(alloc_try);
|
||||
w = alloc_mem.ptrw();
|
||||
@ -205,6 +207,8 @@ void AudioStreamOGGVorbis::set_data(const Vector<uint8_t> &p_data) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ERR_FAIL_COND_MSG(alloc_try == MAX_TEST_MEM, vformat("Couldn't set vorbis data even with an alloc buffer of %d bytes, report bug.", MAX_TEST_MEM));
|
||||
}
|
||||
|
||||
Vector<uint8_t> AudioStreamOGGVorbis::get_data() const {
|
||||
|
Loading…
Reference in New Issue
Block a user