diff --git a/src/zipr.cpp b/src/zipr.cpp
index 00b27da56501c348adf171eb4114db0a86678744..3026af558d0940cecd8d9882db31338803fdd477 100644
--- a/src/zipr.cpp
+++ b/src/zipr.cpp
@@ -2738,23 +2738,21 @@ void ZiprImpl_t::UpdateScoops()
 			/*
 			 * Resize the contents.
 			 */
-			string scoop_contents = scoop->getContents();
+			auto scoop_contents = scoop->getContents();
 			scoop_contents.resize(scoop->getEnd()->getVirtualOffset() -
 			                      scoop->getStart()->getVirtualOffset() + 1);
-			scoop->setContents(scoop_contents);
 			assert(scoop->getSize() == scoop_contents.size());
 
 			/*
 			 * And now update the contents.
 			 */
-			for(VirtualOffset_t i=scoop->getStart()->getVirtualOffset();
+			for(auto i=scoop->getStart()->getVirtualOffset();
 			    i<= scoop->getEnd()->getVirtualOffset();
 			    i++)
 			{
-				auto str=scoop->getContents();
-				str[i-scoop->getStart()->getVirtualOffset()]=memory_space[i];
-				scoop->setContents(str);
+				scoop_contents[i-scoop->getStart()->getVirtualOffset()]=memory_space[i];
 			}
+			scoop->setContents(scoop_contents);
 			// m_firp->getDataScoops().insert(scoop); we added this earlier when we created the obj.
 			// jdh -- a bit worried that this'll break assumptions in other places
 			++it;