From 18463581cf58c6ab79f1a18080da9459caaafab0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Sun, 6 Oct 2002 22:17:35 +0200
Subject: [PATCH] * sexp.c (sexp_iterator_enter_list): Call sexp_iterator_next
 to get to the first element of the list. Updated callers.

Rev: src/nettle/sexp.c:1.6
Rev: src/nettle/testsuite/sexp-test.c:1.6
---
 sexp.c                | 13 +++++--------
 testsuite/sexp-test.c |  5 ++---
 2 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/sexp.c b/sexp.c
index 112b694b..03d41224 100644
--- a/sexp.c
+++ b/sexp.c
@@ -172,7 +172,8 @@ sexp_iterator_enter_list(struct sexp_iterator *iterator)
 
   iterator->level++;
   iterator->type = SEXP_START;
-  return 1;
+  
+  return sexp_iterator_next(iterator);
 }
 
 /* Skips the rest of the current list */
@@ -201,7 +202,6 @@ sexp_iterator_check_type(struct sexp_iterator *iterator,
 			 const uint8_t *type)
 {
   return (sexp_iterator_enter_list(iterator)
-	  && sexp_iterator_next(iterator)
 	  && iterator->type == SEXP_ATOM
 	  && !iterator->display
 	  && strlen(type) == iterator->atom_length
@@ -214,7 +214,6 @@ sexp_iterator_check_types(struct sexp_iterator *iterator,
 			  const uint8_t **types)
 {
   if (sexp_iterator_enter_list(iterator)
-      && sexp_iterator_next(iterator)
       && iterator->type == SEXP_ATOM
       && !iterator->display)
     {
@@ -247,16 +246,12 @@ sexp_iterator_assoc(struct sexp_iterator *iterator,
   
   for (;;)
     {
-      if (!sexp_iterator_next(iterator))
-	return 0;
-
       switch (iterator->type)
 	{
 	case SEXP_LIST:
 
 	  /* FIXME: Use sexp_iterator_check_type? */
-	  if (! (sexp_iterator_enter_list(iterator)
-		 && sexp_iterator_next(iterator)))
+	  if (!sexp_iterator_enter_list(iterator))
 	    return 0;
 	  
 	  if (iterator->type == SEXP_ATOM
@@ -299,5 +294,7 @@ sexp_iterator_assoc(struct sexp_iterator *iterator,
 	default:
 	  abort();
 	}
+      if (!sexp_iterator_next(iterator))
+	return 0;
     }
 }
diff --git a/testsuite/sexp-test.c b/testsuite/sexp-test.c
index 92cd4c09..f97104ad 100644
--- a/testsuite/sexp-test.c
+++ b/testsuite/sexp-test.c
@@ -12,14 +12,13 @@ test_main(void)
   ASSERT(sexp_iterator_first(&i, LDATA("()")));
   ASSERT(i.type == SEXP_LIST
 	 && sexp_iterator_enter_list(&i)
-	 && sexp_iterator_next(&i) && i.type == SEXP_END
+	 && i.type == SEXP_END
 	 && sexp_iterator_exit_list(&i)
 	 && sexp_iterator_next(&i) && i.type == SEXP_END);
 
   ASSERT(sexp_iterator_first(&i, LDATA("(")));
   ASSERT(i.type == SEXP_LIST
-	 && sexp_iterator_enter_list(&i)
-	 && !sexp_iterator_next(&i));
+	 && !sexp_iterator_enter_list(&i));
 
   ASSERT(sexp_iterator_first(&i, LDATA("3:foo0:[3:bar]1:x")));
   ASSERT(i.type == SEXP_ATOM
-- 
GitLab