+void
+limits_destroy(
+ struct slap_limits **lm )
+{
+ int i;
+
+ if ( lm == NULL ) {
+ return;
+ }
+
+ for ( i = 0; lm[ i ]; i++ ) {
+ switch ( lm[ i ]->lm_flags & SLAP_LIMITS_MASK ) {
+ case SLAP_LIMITS_REGEX:
+ regfree( &lm[ i ]->lm_regex );
+ break;
+
+ case SLAP_LIMITS_EXACT:
+ case SLAP_LIMITS_ONE:
+ case SLAP_LIMITS_SUBTREE:
+ case SLAP_LIMITS_CHILDREN:
+ if ( !BER_BVISNULL( &lm[ i ]->lm_pat ) ) {
+ ch_free( lm[ i ]->lm_pat.bv_val );
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ ch_free( lm[ i ] );
+ }
+
+ ch_free( lm );
+}