]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: event_find_field() - Rewrite without using recursion
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 16 Mar 2021 16:26:20 +0000 (18:26 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 27 Apr 2021 10:55:32 +0000 (10:55 +0000)
This simplifies the following change.

src/lib/lib-event.c

index 0988be460c949a766c0dc8a3af2fd4c10fa78529..8f214810b6ba270c6eff6bf4122745627e0be91e 100644 (file)
@@ -810,10 +810,14 @@ event_find_field_int(const struct event *event, const char *key)
 const struct event_field *
 event_find_field(const struct event *event, const char *key)
 {
-       const struct event_field *field = event_find_field_int(event, key);
-       if (field != NULL || event->parent == NULL)
-               return field;
-       return event_find_field(event->parent, key);
+       const struct event_field *field;
+
+       do {
+               if ((field = event_find_field_int(event, key)) != NULL)
+                       return field;
+               event = event->parent;
+       } while (event != NULL);
+       return NULL;
 }
 
 const char *