From b30b9ab8cb13ddbc68a4912c9f06116c0f59bc27 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Tue, 25 Feb 2014 10:50:53 +0100
Subject: [PATCH] Fixed a minor issue where a string is expected but returns
 slice

---
 ethutil/trie.go      |  4 ++--
 ethutil/trie_test.go | 19 ++++++++-----------
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/ethutil/trie.go b/ethutil/trie.go
index 83527d364..a17dc37ad 100644
--- a/ethutil/trie.go
+++ b/ethutil/trie.go
@@ -439,7 +439,7 @@ func (it *TrieIterator) workNode(currentNode *Value) {
 	if currentNode.Len() == 2 {
 		k := CompactDecode(currentNode.Get(0).Str())
 
-		if currentNode.Get(1).IsSlice() {
+		if currentNode.Get(1).Str() == "" {
 			it.workNode(currentNode.Get(1))
 		} else {
 			if k[len(k)-1] == 16 {
@@ -454,7 +454,7 @@ func (it *TrieIterator) workNode(currentNode *Value) {
 			if i == 16 && currentNode.Get(i).Len() != 0 {
 				it.values = append(it.values, currentNode.Get(i).Str())
 			} else {
-				if currentNode.Get(i).IsSlice() {
+				if currentNode.Get(i).Str() == "" {
 					it.workNode(currentNode.Get(i))
 				} else {
 					val := currentNode.Get(i).Str()
diff --git a/ethutil/trie_test.go b/ethutil/trie_test.go
index c3a8f224d..645c5a225 100644
--- a/ethutil/trie_test.go
+++ b/ethutil/trie_test.go
@@ -1,7 +1,6 @@
 package ethutil
 
 import (
-	"fmt"
 	"reflect"
 	"testing"
 )
@@ -160,15 +159,13 @@ func TestTrieIterator(t *testing.T) {
 	trie.Update("ca", LONG_WORD)
 	trie.Update("cat", LONG_WORD)
 
+	lenBefore := len(trie.cache.nodes)
 	it := trie.NewIterator()
-	fmt.Println("purging")
-	fmt.Println("len =", it.Purge())
-	/*
-		for it.Next() {
-			k := it.Key()
-			v := it.Value()
-
-			fmt.Println(k, v)
-		}
-	*/
+	if num := it.Purge(); num != 3 {
+		t.Errorf("Expected purge to return 3, got %d", num)
+	}
+
+	if lenBefore == len(trie.cache.nodes) {
+		t.Errorf("Expected cached nodes to be deleted")
+	}
 }
-- 
GitLab