@@ -600,27 +600,24 @@ struct Iterator {
600600 if (!dbIterator_->Valid ()) {
601601 dbIterator_->SeekToLast ();
602602 } else {
603- std::string keyStr = dbIterator_->key ().ToString ();
604-
605- if (lt_ != NULL ) {
606- if (lt_->compare (keyStr) <= 0 )
607- dbIterator_->Prev ();
608- } else if (lte_ != NULL ) {
609- if (lte_->compare (keyStr) < 0 )
610- dbIterator_->Prev ();
611- } else if (start_ != NULL ) {
612- if (start_->compare (keyStr))
613- dbIterator_->Prev ();
603+ leveldb::Slice key = dbIterator_->key ();
604+
605+ if ((lt_ != NULL && key.compare (*lt_) >= 0 ) ||
606+ (lte_ != NULL && key.compare (*lte_) > 0 ) ||
607+ (start_ != NULL && key.compare (*start_) > 0 )) {
608+ dbIterator_->Prev ();
614609 }
615610 }
616611
612+ // TODO: this looks like dead code. Remove it in a
613+ // next major release together with Level/community#86.
617614 if (dbIterator_->Valid () && lt_ != NULL ) {
618- if (lt_-> compare ( dbIterator_->key ().ToString ()) < = 0 )
615+ if (dbIterator_->key ().compare (*lt_) > = 0 )
619616 dbIterator_->Prev ();
620617 }
621618 } else {
622619 if (dbIterator_->Valid () && gt_ != NULL
623- && gt_-> compare ( dbIterator_->key ().ToString () ) == 0 )
620+ && dbIterator_->key ().compare (*gt_ ) == 0 )
624621 dbIterator_->Next ();
625622 }
626623 } else if (reverse_) {
@@ -1368,8 +1365,7 @@ NAPI_METHOD(iterator_seek) {
13681365 dbIterator->SeekToLast ();
13691366 dbIterator->Next ();
13701367 }
1371- }
1372- else if (dbIterator->Valid ()) {
1368+ } else if (dbIterator->Valid ()) {
13731369 int cmp = dbIterator->key ().compare (target);
13741370 if (cmp > 0 && iterator->reverse_ ) {
13751371 dbIterator->Prev ();
0 commit comments