From: Kurt Zeilenga Date: Wed, 26 Jul 2000 23:32:39 +0000 (+0000) Subject: Revert ber_peek_tag to older, more efficient implementation. X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~2344 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=19091cee32b3f35196ab27d2e7f166349e7dac58;p=openldap Revert ber_peek_tag to older, more efficient implementation. --- 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