diff options
author | gary rong <garyrong0905@gmail.com> | 2017-08-11 18:41:49 +0800 |
---|---|---|
committer | Felix Lange <fjl@users.noreply.github.com> | 2017-08-11 18:41:49 +0800 |
commit | 73c5aba21fcca1bf1f78e94d88920fde6762be9e (patch) | |
tree | 551324966298ee0462ff39b378925aea3597eccb | |
parent | 17ce0a37de5a2712a8bf9d58df705e718b3b2cd6 (diff) | |
download | go-tangerine-73c5aba21fcca1bf1f78e94d88920fde6762be9e.tar go-tangerine-73c5aba21fcca1bf1f78e94d88920fde6762be9e.tar.gz go-tangerine-73c5aba21fcca1bf1f78e94d88920fde6762be9e.tar.bz2 go-tangerine-73c5aba21fcca1bf1f78e94d88920fde6762be9e.tar.lz go-tangerine-73c5aba21fcca1bf1f78e94d88920fde6762be9e.tar.xz go-tangerine-73c5aba21fcca1bf1f78e94d88920fde6762be9e.tar.zst go-tangerine-73c5aba21fcca1bf1f78e94d88920fde6762be9e.zip |
ethdb: return copied value from MemDatabase.Get (#14958)
-rw-r--r-- | ethdb/database_test.go | 15 | ||||
-rw-r--r-- | ethdb/memory_database.go | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/ethdb/database_test.go b/ethdb/database_test.go index 4740cdaed..5e4a3ca34 100644 --- a/ethdb/database_test.go +++ b/ethdb/database_test.go @@ -95,6 +95,21 @@ func testPutGet(db ethdb.Database, t *testing.T) { } for _, v := range test_values { + orig, err := db.Get([]byte(v)) + if err != nil { + t.Fatalf("get failed: %v", err) + } + orig[0] = byte(0xff) + data, err := db.Get([]byte(v)) + if err != nil { + t.Fatalf("get failed: %v", err) + } + if !bytes.Equal(data, []byte("?")) { + t.Fatalf("get returned wrong result, got %q expected ?", string(data)) + } + } + + for _, v := range test_values { err := db.Delete([]byte(v)) if err != nil { t.Fatalf("delete %q failed: %v", v, err) diff --git a/ethdb/memory_database.go b/ethdb/memory_database.go index a2ee2f2cc..11b093724 100644 --- a/ethdb/memory_database.go +++ b/ethdb/memory_database.go @@ -50,7 +50,7 @@ func (db *MemDatabase) Get(key []byte) ([]byte, error) { defer db.lock.RUnlock() if entry, ok := db.db[string(key)]; ok { - return entry, nil + return common.CopyBytes(entry), nil } return nil, errors.New("not found") } |