From 6794944c00800ebf78d2141e3fbc7db891692499 Mon Sep 17 00:00:00 2001
From: Leron Reznikov <reznikovl@gmail.com>
Date: Thu, 19 Jan 2023 21:00:27 -0800
Subject: [PATCH] fix undefined behavior due to reading iterator data after
 modification

---
 db/builder.cc | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/db/builder.cc b/db/builder.cc
index e6329e0..fe03490 100644
--- a/db/builder.cc
+++ b/db/builder.cc
@@ -30,14 +30,15 @@ Status BuildTable(const std::string& dbname, Env* env, const Options& options,
 
     TableBuilder* builder = new TableBuilder(options, file);
     meta->smallest.DecodeFrom(iter->key());
-    Slice key;
     for (; iter->Valid(); iter->Next()) {
-      key = iter->key();
-      builder->Add(key, iter->value());
+      builder->Add(iter->key(), iter->value());
     }
-    if (!key.empty()) {
-      meta->largest.DecodeFrom(key);
+    
+    iter->SeekToLast();
+    if(iter->Valid()) {
+      meta->largest.DecodeFrom(iter->key());
     }
+    
 
     // Finish and check for builder errors
     s = builder->Finish();