+ if( !found ) {
+ ocvalues = ch_realloc( ocvalues,
+ sizeof( struct berval ) * (noc+2) );
+
+ assert( k == noc );
+
+ ocvalues[noc] = sup->soc_cname;
+
+ assert( ocvalues[noc].bv_val );
+ assert( ocvalues[noc].bv_len );
+
+ noc++;
+
+ ocvalues[noc].bv_len = 0;
+ ocvalues[noc].bv_val = NULL;
+
+#if OCDEBUG
+#ifdef NEW_LOGGING
+ LDAP_LOG( CONFIG, ENTRY,
+ "< objectSubClassIndexer(%d, %d, %s)\n",
+ i, k, sup->soc_cname.bv_val );
+#else
+ Debug( LDAP_DEBUG_TRACE,
+ "< objectSubClassIndexer(%d, %d, %s)\n",
+ i, k, sup->soc_cname.bv_val );
+#endif
+#endif
+ }
+ }
+ }
+
+#if 0
+#ifdef NEW_LOGGING
+ LDAP_LOG( CONFIG, ENTRY,
+ "< objectSubClassIndexer(%d)\n", noc, 0, 0 );
+#else
+ Debug( LDAP_DEBUG_TRACE, "< objectSubClassIndexer(%d)\n",
+ noc, 0, 0 );
+#endif
+#endif
+
+ rc = octetStringIndexer( use, mask, syntax, mr,
+ prefix, ocvalues, keysp );
+
+ ch_free( ocvalues );
+ return rc;
+}
+
+/* Index generation function */
+static int objectSubClassFilter(
+ slap_mask_t use,
+ slap_mask_t flags,
+ Syntax *syntax,
+ MatchingRule *mr,
+ struct berval *prefix,
+ void * assertedValue,
+ BerVarray *keysp )
+{
+#if OCDEBUG
+ struct berval *bv = (struct berval *) assertedValue;
+ ObjectClass *oc = oc_bvfind( bv );
+ if( oc ) {
+ bv = &oc->soc_cname;
+ }
+
+#ifdef NEW_LOGGING
+ LDAP_LOG( CONFIG, ENTRY,
+ "< objectSubClassFilter(%s)\n", bv->bv_val, 0, 0 );
+#else
+ Debug( LDAP_DEBUG_TRACE, "< objectSubClassFilter(%s)\n",
+ bv->bv_val, 0, 0 );
+#endif
+#endif
+
+ return octetStringFilter( use, flags, syntax, mr,
+ prefix, assertedValue, keysp );