/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2000-2005 The OpenLDAP Foundation.
+ * Copyright 2000-2006 The OpenLDAP Foundation.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
rc2 = bdb_cache_find_id( op, tid, ei->bei_id,
&ei, 1, locker, lock );
if ( rc2 ) rc = rc2;
- } else if ( ei )
+ } else if ( ei ) {
bdb_cache_entryinfo_unlock( ei );
+ memset( lock, 0, sizeof( *lock ));
+ lock->mode = DB_LOCK_NG;
+ }
} else if ( ei ) {
bdb_cache_entryinfo_unlock( ei );
}
*e = ei;
} else if ( matched && rc == DB_NOTFOUND ) {
/* always return EntryInfo */
- ei = ei->bei_parent;
- rc2 = bdb_cache_find_id( op, tid, ei->bei_id, &ei, 1,
- locker, lock );
- if ( rc2 ) rc = rc2;
+ if ( ei->bei_parent ) {
+ ei = ei->bei_parent;
+ rc2 = bdb_cache_find_id( op, tid, ei->bei_id, &ei, 1,
+ locker, lock );
+ if ( rc2 ) rc = rc2;
+ }
*e = ei;
}
}