1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-08 12:40:44 +00:00

[Windows] Fix loading debug symbol files over 2GB.

This commit is contained in:
Pāvels Nadtočajevs
2024-12-11 17:28:29 +02:00
parent 44dfa7e710
commit a8c8eca74a
4 changed files with 68 additions and 10 deletions

View File

@@ -52,14 +52,9 @@ backtrace_get_view (struct backtrace_state *state, int descriptor,
{
uint64_t got;
ssize_t r;
if ((uint64_t) (size_t) size != size)
{
error_callback (data, "file size too large", 0);
return 0;
}
if (lseek (descriptor, offset, SEEK_SET) < 0)
/* GODOT start */
if (_lseeki64 (descriptor, offset, SEEK_SET) < 0)
/* GODOT end */
{
error_callback (data, "lseek", errno);
return 0;
@@ -74,7 +69,13 @@ backtrace_get_view (struct backtrace_state *state, int descriptor,
got = 0;
while (got < size)
{
r = read (descriptor, view->base, size - got);
/* GODOT start */
uint64_t sz = size - got;
if (sz > INT_MAX) {
sz = INT_MAX;
}
r = _read (descriptor, view->base, sz);
/* GODOT end */
if (r < 0)
{
error_callback (data, "read", errno);
@@ -84,6 +85,9 @@ backtrace_get_view (struct backtrace_state *state, int descriptor,
if (r == 0)
break;
got += (uint64_t) r;
/* GODOT start */
view->base += r;
/* GODOT end */
}
if (got < size)