diff --git a/IO/LANLX3D/X3D_reader.cxx b/IO/LANLX3D/X3D_reader.cxx
index 1b0252507976af2a6a4bca119ccd114d9acfef03..76a16b2421e8f7fa82f0177959d94b729eca0de8 100644
--- a/IO/LANLX3D/X3D_reader.cxx
+++ b/IO/LANLX3D/X3D_reader.cxx
@@ -46,13 +46,13 @@ streampos Reader::offset_of(const string& block)
     size_t num_cached_blocks = offset.size();
     if (num_cached_blocks)
     { // some blocks cached; start after them...
-      string last_block = TOP_BLOCK[num_cached_blocks - 1];
+      string const& last_block = TOP_BLOCK[num_cached_blocks - 1];
       if (file.tellg() < offset.at(last_block)) // ...unless beyond them
         file.seekg(offset.at(last_block));      // move to last cached block
     }
     for (size_t i = num_cached_blocks; i < TOP_BLOCK.size(); i++)
     {
-      string next_block = TOP_BLOCK[i]; // look for next uncached block
+      string const& next_block = TOP_BLOCK[i]; // look for next uncached block
       streampos position;
       while ((position = file.tellg()) > 0)
       {
@@ -94,7 +94,7 @@ Reader::Reader(const string& filename_, const Version version_)
   expect_starts_with(MAGIC_STRING); // match X3D header line
 
   // Read Header Block
-  string block = TOP_BLOCK[0];
+  string const& block = TOP_BLOCK[0];
   file.seekg(offset_of(block));
   expect_starts_with(block);