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); + } } }