From 7e8fecccec2b9be06c2fca5d214bfb620ae9d8c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Thu, 29 Oct 2009 00:45:23 +0000 Subject: [PATCH] retry on memory reading error --- library/LinuxMemAccess-memfiles.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/LinuxMemAccess-memfiles.h b/library/LinuxMemAccess-memfiles.h index 3b8066b33..f3d93204f 100644 --- a/library/LinuxMemAccess-memfiles.h +++ b/library/LinuxMemAccess-memfiles.h @@ -31,19 +31,26 @@ distribution. #include using namespace std; +// danger: uses recursion! inline void Mread (const uint32_t &offset, const uint32_t &size, uint8_t *target) { + if(size == 0) return; + int result; result = pread(g_ProcessMemFile, target,size,offset); if(result != size) { - cerr << "pread failed: can't read " << size << " bytes at addres " << offset << endl; if(result == -1) { + cerr << "pread failed: can't read " << size << " bytes at addres " << offset << endl; cerr << "errno: " << errno << endl; errno = 0; } + else + { + Mread(offset + result, size - result, target + result); + } } }