Path: blob/master/thirdparty/libbacktrace/patches/0001-big-files-support.patch
9904 views
diff --git a/thirdparty/libbacktrace/read.c b/thirdparty/libbacktrace/read.c1index 7af66602fd..a7e937667c 1006442--- a/thirdparty/libbacktrace/read.c3+++ b/thirdparty/libbacktrace/read.c4@@ -52,14 +52,7 @@ backtrace_get_view (struct backtrace_state *state, int descriptor,5{6uint64_t got;7ssize_t r;8-9- if ((uint64_t) (size_t) size != size)10- {11- error_callback (data, "file size too large", 0);12- return 0;13- }14-15- if (lseek (descriptor, offset, SEEK_SET) < 0)16+ if (_lseeki64 (descriptor, offset, SEEK_SET) < 0)17{18error_callback (data, "lseek", errno);19return 0;20@@ -72,9 +65,13 @@ backtrace_get_view (struct backtrace_state *state, int descriptor,21view->len = size;2223got = 0;24+ void *ptr = view->base;25while (got < size)26{27- r = read (descriptor, view->base, size - got);28+ uint64_t sz = size - got;29+ if (sz > INT_MAX)30+ sz = INT_MAX;31+ r = _read (descriptor, ptr, sz);32if (r < 0)33{34error_callback (data, "read", errno);35@@ -84,6 +81,7 @@ backtrace_get_view (struct backtrace_state *state, int descriptor,36if (r == 0)37break;38got += (uint64_t) r;39+ ptr += r;40}4142if (got < size)434445