From 48c6a131493f2c26aa5d1d2080090a5c4721152c Mon Sep 17 00:00:00 2001 From: Tim Ruehsen Date: Fri, 31 Aug 2012 15:27:59 +0200 Subject: [PATCH] cleanup _asn1_copy_structure3 --- lib/structure.c | 44 ++++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/lib/structure.c b/lib/structure.c index 41cebe4..b62d500 100644 --- a/lib/structure.c +++ b/lib/structure.c @@ -395,44 +395,32 @@ _asn1_copy_structure3 (ASN1_TYPE source_node) _asn1_set_name (p_d, p_s->name); if (p_s->value) _asn1_set_value (p_d, p_s->value, p_s->value_len); - move = DOWN; - } - else - move = RIGHT; - - if (move == DOWN) - { if (p_s->down) { p_s = p_s->down; p_d_prev = p_d; p_d = _asn1_add_node_only (p_s->type); _asn1_set_down (p_d_prev, p_d); + continue; } - else - move = RIGHT; + if (p_s == source_node) + break; } - if (p_s == source_node) - break; - - if (move == RIGHT) - { - if (p_s->right) - { - p_s = p_s->right; - p_d_prev = p_d; - p_d = _asn1_add_node_only (p_s->type); - _asn1_set_right (p_d_prev, p_d); - } - else + if (p_s->right) + { + move = RIGHT; + p_s = p_s->right; + p_d_prev = p_d; + p_d = _asn1_add_node_only (p_s->type); + _asn1_set_right (p_d_prev, p_d); + } + else + { move = UP; - } - if (move == UP) - { - p_s = _asn1_find_up (p_s); - p_d = _asn1_find_up (p_d); - } + p_s = _asn1_find_up (p_s); + p_d = _asn1_find_up (p_d); + } } while (p_s != source_node); -- 1.7.10.4