diff --git a/src/memory_space.cpp b/src/memory_space.cpp index 4d2465dc05b3a381c83760e1042a208c96d0d170..4788d3ca57b3a8255768bdb3819fb538da051a67 100644 --- a/src/memory_space.cpp +++ b/src/memory_space.cpp @@ -176,7 +176,7 @@ std::pair<RangeSet_t::const_iterator,RangeSet_t::const_iterator> ZiprMemorySpace_t::GetNearbyFreeRanges(const RangeAddress_t hint,size_t count) { Range_t search(hint, hint+1); - RangeSet_t::const_iterator result = free_ranges.upper_bound(search); + RangeSet_t::const_iterator result = free_ranges.lower_bound(search); /* * TODO: Not quite sure what to make of this. */ diff --git a/src/zipr.cpp b/src/zipr.cpp index 7a13e966207cf4cbdeea134ef4025c03f5eba741..744f9426d9354314590d09ceefbcba22c2f404fd 100644 --- a/src/zipr.cpp +++ b/src/zipr.cpp @@ -1429,7 +1429,8 @@ void ZiprImpl_t::PlaceDollops() << std::hex << placement.GetEnd() << endl; - if ((placement.GetEnd()-placement.GetStart()) < minimum_valid_req_size){ + if ((placement.GetEnd()-placement.GetStart()) < minimum_valid_req_size && + placement.GetEnd()-placement.GetStart() < to_place->GetSize()) { if (m_verbose) cout << "Bad GetNearbyFreeRange() result." << endl; placed = false;