]> git.pld-linux.org Git - packages/db4.7.git/blob - patch.4.7.25.2
- rel 4 not patchlevel
[packages/db4.7.git] / patch.4.7.25.2
1 Index: lock/lock.c
2 ===================================================================
3 RCS file: /a/CVSROOT/db/lock/lock.c,v
4 retrieving revision 12.61
5 diff -c -r12.61 lock.c
6 *** lock/lock.c 22 Jul 2008 12:08:53 -0000      12.61
7 --- lock/lock.c 19 Aug 2008 17:28:24 -0000
8 ***************
9 *** 1278,1287 ****
10                 SH_TAILQ_REMOVE(
11                     &lt->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(&lt->reginfo,
15                             SH_DBT_PTR(&sh_obj->lockobj));
16 !                       LOCK_REGION_UNLOCK(env);
17                 }
18                 SH_TAILQ_INSERT_HEAD(
19                     &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj);
20 --- 1278,1289 ----
21                 SH_TAILQ_REMOVE(
22                     &lt->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(&lt->reginfo,
27                             SH_DBT_PTR(&sh_obj->lockobj));
28 !                       if (region->part_t_size != 1)
29 !                               LOCK_REGION_UNLOCK(env);
30                 }
31                 SH_TAILQ_INSERT_HEAD(
32                     &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj);
33 ***************
34 *** 1470,1484 ****
35                 if (obj->size <= sizeof(sh_obj->objdata))
36                         p = sh_obj->objdata;
37                 else {
38 !                       LOCK_REGION_LOCK(env);
39                         if ((ret =
40                             __env_alloc(&lt->reginfo, obj->size, &p)) != 0) {
41                                 __db_errx(env,
42                                     "No space for lock object storage");
43 !                               LOCK_REGION_UNLOCK(env);
44                                 goto err;
45                         }
46 !                       LOCK_REGION_UNLOCK(env);
47                 }
48   
49                 memcpy(p, obj->data, obj->size);
50 --- 1472,1492 ----
51                 if (obj->size <= sizeof(sh_obj->objdata))
52                         p = sh_obj->objdata;
53                 else {
54 !                       /*
55 !                        * If we have only one partition, the region is locked.
56 !                        */
57 !                       if (region->part_t_size != 1)
58 !                               LOCK_REGION_LOCK(env);
59                         if ((ret =
60                             __env_alloc(&lt->reginfo, obj->size, &p)) != 0) {
61                                 __db_errx(env,
62                                     "No space for lock object storage");
63 !                               if (region->part_t_size != 1)
64 !                                       LOCK_REGION_UNLOCK(env);
65                                 goto err;
66                         }
67 !                       if (region->part_t_size != 1)
68 !                               LOCK_REGION_UNLOCK(env);
69                 }
70   
71                 memcpy(p, obj->data, obj->size);
This page took 0.066326 seconds and 3 git commands to generate.