BEREncodeCallback *f;
void *p;
+ ber->ber_usertag = 0;
+
f = va_arg( ap, BEREncodeCallback * );
p = va_arg( ap, void * );
-
rc = (*f)( ber, p );
+
+ if ( ber->ber_usertag ) {
+ ber->ber_usertag = 0;
+ goto next;
+ }
} break;
case 'b': /* boolean */
case 't': /* tag for the next element */
ber->ber_tag = va_arg( ap, ber_tag_t );
ber->ber_usertag = 1;
- break;
+ goto next;
case 'v': /* vector of strings */
if ( (ss = va_arg( ap, char ** )) == NULL )
break;
}
- if ( ber->ber_usertag == 0 ) {
- ber->ber_tag = LBER_DEFAULT;
- } else {
- ber->ber_usertag = 0;
- }
+ ber->ber_tag = LBER_DEFAULT;
+ next:;
}
va_end( ap );