X86: correct tail return address calculation
[oota-llvm.git] / lib / Support / MemoryObject.cpp
index 91e3ecd23a2e7f807c6840a43d7215b8c03e4419..02b5b5034fbbe5fef132f1d7128aa0ee87eb39cb 100644 (file)
@@ -15,20 +15,19 @@ MemoryObject::~MemoryObject() {
 
 int MemoryObject::readBytes(uint64_t address,
                             uint64_t size,
-                            uint8_t* buf,
-                            uint64_t* copied) const {
+                            uint8_t* buf) const {
   uint64_t current = address;
   uint64_t limit = getBase() + getExtent();
-  
-  while (current - address < size && current < limit) {
+
+  if (current + size > limit)
+    return -1;
+
+  while (current - address < size) {
     if (readByte(current, &buf[(current - address)]))
       return -1;
     
     current++;
   }
   
-  if (copied)
-    *copied = current - address;
-  
   return 0;
 }