2 ===================================================================
3 RCS file: /a/CVSROOT/db/lock/lock.c,v
4 retrieving revision 12.61
6 *** lock/lock.c 22 Jul 2008 12:08:53 -0000 12.61
7 --- lock/lock.c 19 Aug 2008 17:28:24 -0000
11 <->obj_tab[obj_ndx], sh_obj, links, __db_lockobj);
12 if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) {
13 ! LOCK_REGION_LOCK(env);
14 __env_alloc_free(<->reginfo,
15 SH_DBT_PTR(&sh_obj->lockobj));
16 ! LOCK_REGION_UNLOCK(env);
19 &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj);
22 <->obj_tab[obj_ndx], sh_obj, links, __db_lockobj);
23 if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) {
24 ! if (region->part_t_size != 1)
25 ! LOCK_REGION_LOCK(env);
26 __env_alloc_free(<->reginfo,
27 SH_DBT_PTR(&sh_obj->lockobj));
28 ! if (region->part_t_size != 1)
29 ! LOCK_REGION_UNLOCK(env);
32 &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj);
35 if (obj->size <= sizeof(sh_obj->objdata))
38 ! LOCK_REGION_LOCK(env);
40 __env_alloc(<->reginfo, obj->size, &p)) != 0) {
42 "No space for lock object storage");
43 ! LOCK_REGION_UNLOCK(env);
46 ! LOCK_REGION_UNLOCK(env);
49 memcpy(p, obj->data, obj->size);
51 if (obj->size <= sizeof(sh_obj->objdata))
55 ! * If we have only one partition, the region is locked.
57 ! if (region->part_t_size != 1)
58 ! LOCK_REGION_LOCK(env);
60 __env_alloc(<->reginfo, obj->size, &p)) != 0) {
62 "No space for lock object storage");
63 ! if (region->part_t_size != 1)
64 ! LOCK_REGION_UNLOCK(env);
67 ! if (region->part_t_size != 1)
68 ! LOCK_REGION_UNLOCK(env);
71 memcpy(p, obj->data, obj->size);