From 19091cee32b3f35196ab27d2e7f166349e7dac58 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Wed, 26 Jul 2000 23:32:39 +0000 Subject: [PATCH] Revert ber_peek_tag to older, more efficient implementation. --- libraries/liblber/decode.c | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/libraries/liblber/decode.c b/libraries/liblber/decode.c index 99ff60b908..ef12bf46d6 100644 --- a/libraries/liblber/decode.c +++ b/libraries/liblber/decode.c @@ -136,29 +136,22 @@ ber_skip_tag( BerElement *ber, ber_len_t *len ) ber_tag_t ber_peek_tag( - BerElement *ber_in, + BerElement *ber, ber_len_t *len ) { - ber_tag_t tag; - BerElement *ber; - - assert( ber_in != NULL ); - assert( BER_VALID( ber_in ) ); - - *len = 0; - - ber = ber_dup( ber_in ); - - if( ber == NULL ) { - return LBER_ERROR; - } + /* + * This implementation assumes ber_skip_tag() only + * modifies ber_ptr field of the BerElement. + */ - assert( BER_VALID( ber ) ); + char *save; + ber_tag_t tag; + save = ber->ber_ptr; tag = ber_skip_tag( ber, len ); + ber->ber_ptr = save; - ber_free( ber, 0 ); - return( tag ); + return tag; } static ber_len_t -- 2.39.5