| 175 | } |
| 176 | |
| 177 | int decompress_buf(const Vector<uint8_t> &p_buffer, Vector<uint8_t> &contents) { |
| 178 | ERR_FAIL_COND_V(p_buffer.size() < 12, -1); |
| 179 | const uint8_t *buf = p_buffer.ptr(); |
| 180 | int decompressed_size = decode_uint32(&buf[8]); |
| 181 | int result = 0; |
| 182 | if (decompressed_size == 0) { |
| 183 | contents = p_buffer.slice(12); |
| 184 | } else { |
| 185 | contents.resize(decompressed_size); |
| 186 | result = Compression::decompress(contents.ptrw(), contents.size(), &buf[12], p_buffer.size() - 12, Compression::MODE_ZSTD); |
| 187 | } |
| 188 | return result; |
| 189 | } |
| 190 | |
| 191 | #define GDSC_HEADER "GDSC" |
| 192 | #define CHECK_GDSC_HEADER(p_buffer) _GDRE_CHECK_HEADER(p_buffer, GDSC_HEADER) |