1 | Wed Dec 16 11:10:47 CET 2009 lukas.giessmann@hotmail.de |
---|
2 | * remove-association |
---|
3 | |
---|
4 | New patches: |
---|
5 | |
---|
6 | [remove-association |
---|
7 | lukas.giessmann@hotmail.de**20091216101047 |
---|
8 | Ignore-this: 86dc87403a2617800d913be373dd6992 |
---|
9 | ] { |
---|
10 | hunk ./src/elephant/associations.lisp 102 |
---|
11 | (let ((index (get-association-index slot-def (get-con instance)))) |
---|
12 | (if (and (eq (association-type slot-def) :ref) |
---|
13 | (slot-boundp-using-class class instance slot-def)) |
---|
14 | - (remove-kv-pair (slot-value-using-class class instance slot-def) (oid instance) index) |
---|
15 | - (remove-kv-pair (oid associated) (oid instance) index)))) |
---|
16 | + (remove-kv-pair (oid (slot-value-using-class class instance slot-def)) (oid instance) index) |
---|
17 | + (when associated ;it is possible that the original association |
---|
18 | + ;slot was not bound at the time of |
---|
19 | + ;deletion. thus, remove the entry only when |
---|
20 | + ;it is bound |
---|
21 | + (remove-kv-pair (oid associated) (oid instance) index))))) |
---|
22 | |
---|
23 | (defun update-other-association-end (class instance slot-def other-instance) |
---|
24 | "Update the association index for the other object so that it maps from |
---|
25 | hunk ./src/elephant/associations.lisp 175 |
---|
26 | (when (type-check-association instance slot-def associated) |
---|
27 | (ensure-transaction (:store-controller sc) |
---|
28 | (case (association-type slot-def) |
---|
29 | - (:ref (setf (slot-value instance (if (symbolp slotname) slotname (slot-definition-name slotname))) nil)) |
---|
30 | - (:m21 (remove-association-end fclass associated fslot instance)) |
---|
31 | + (:ref (when (slot-boundp-using-class class instance slot-def) |
---|
32 | + (slot-makunbound-using-class class instance slot-def))) |
---|
33 | + (:m21 (when (slot-boundp-using-class fclass associated fslot) |
---|
34 | + (slot-makunbound-using-class fclass associated fslot))) |
---|
35 | (:m2m (remove-association-end fclass associated fslot instance) |
---|
36 | (remove-association-end class instance slot-def associated))))))) |
---|
37 | |
---|
38 | } |
---|
39 | |
---|
40 | Context: |
---|
41 | |
---|
42 | [TAG ELEPHANT-1-0-A2 |
---|
43 | eslick@common-lisp.net**20090113201539] |
---|
44 | [Clean up memutil fixnum interface |
---|
45 | ieslick@common-lisp.net**20090113200727] |
---|
46 | [Association declaration bug |
---|
47 | ieslick@common-lisp.net**20090113200713] |
---|
48 | [Clean up serialier use of memutil; bdb condition msg |
---|
49 | ieslick@common-lisp.net**20090113195939] |
---|
50 | [Revert sbcl fast locks; add errfile to BDB; improve cache locking |
---|
51 | ieslick@common-lisp.net**20090113013529] |
---|
52 | [Fix race condition in caching; add BDB errfile support; minor imprrovements to transaction macro and pset api. |
---|
53 | ieslick@common-lisp.net**20090112223522] |
---|
54 | [Ensure that BDB condition is valid during macroexpansion |
---|
55 | ieslick@common-lisp.net**20090112210529] |
---|
56 | [Fix testcondition conflicts |
---|
57 | eslick@common-lisp.net**20090110200538] |
---|
58 | [Fix transaction inhibit test |
---|
59 | ieslick@common-lisp.net**20090110004336] |
---|
60 | [Fixup indexing for clozure; BDB transaction inhibiting bugfix |
---|
61 | eslick@common-lisp.net**20090110165542] |
---|
62 | [Fix rollback test |
---|
63 | ieslick@common-lisp.net**20090110004026] |
---|
64 | [Performance declarations (not verified on all lisps) |
---|
65 | ieslick@common-lisp.net**20090109143359] |
---|
66 | [Fix bug in inhibit-rollback; fix reinit bug on persistent-metaclas |
---|
67 | ieslick@common-lisp.net**20090109104433] |
---|
68 | [Remove default register argument enabled for BDB |
---|
69 | ieslick@common-lisp.net**20090109071045] |
---|
70 | [Inhibit-rollback option to BDB transactions for arbitrary non-local exits |
---|
71 | ieslick@common-lisp.net**20090109070733] |
---|
72 | [Revert some minor changes |
---|
73 | ieslick@common-lisp.net**20090109035713] |
---|
74 | [Simple extension to snapshot-set |
---|
75 | ieslick@common-lisp.net**20090109031720] |
---|
76 | [Fix duplicate item warning in BDB index writes |
---|
77 | ieslick@common-lisp.net**20090107153442] |
---|
78 | [Fix load order and layout for GC subsystem |
---|
79 | ieslick@common-lisp.net**20090107125806] |
---|
80 | [Enhance concurrent gc to catch writes during the mark phase |
---|
81 | ieslick@common-lisp.net**20090107053908] |
---|
82 | [Change code version to 1.0; optimize symbol interning in serializer |
---|
83 | ieslick@common-lisp.net**20090107042700] |
---|
84 | [TAG ELEPHANT-1-0-A1 |
---|
85 | ieslick@common-lisp.net**20090105234537] |
---|
86 | Patch bundle hash: |
---|
87 | 499216a2aba238e27f0886dd1cc7fc4cbf1ef232 |
---|