You've already forked godot
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:
22
thirdparty/libbacktrace/read.c
vendored
22
thirdparty/libbacktrace/read.c
vendored
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user