InstallIsidorus: remove-association-elephant-1.0.a2.patch

File remove-association-elephant-1.0.a2.patch, 3.9 KB (added by lgiessmann, 10 years ago)
1Wed Dec 16 11:10:47 CET 2009
2  * remove-association
4New patches:
8 Ignore-this: 86dc87403a2617800d913be373dd6992
9] {
10hunk ./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)))))
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
25hunk ./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)))))))
42[TAG ELEPHANT-1-0-A2**20090113201539]
44[Clean up memutil fixnum interface**20090113200727]
46[Association declaration bug**20090113200713]
48[Clean up serialier use of memutil; bdb condition msg**20090113195939]
50[Revert sbcl fast locks; add errfile to BDB; improve cache locking**20090113013529]
52[Fix race condition in caching; add BDB errfile support; minor imprrovements to transaction macro and pset api.**20090112223522]
54[Ensure that BDB condition is valid during macroexpansion**20090112210529]
56[Fix testcondition conflicts**20090110200538]
58[Fix transaction inhibit test**20090110004336]
60[Fixup indexing for clozure; BDB transaction inhibiting bugfix**20090110165542]
62[Fix rollback test**20090110004026]
64[Performance declarations (not verified on all lisps)**20090109143359]
66[Fix bug in inhibit-rollback; fix reinit bug on persistent-metaclas**20090109104433]
68[Remove default register argument enabled for BDB**20090109071045]
70[Inhibit-rollback option to BDB transactions for arbitrary non-local exits**20090109070733]
72[Revert some minor changes**20090109035713]
74[Simple extension to snapshot-set**20090109031720]
76[Fix duplicate item warning in BDB index writes**20090107153442]
78[Fix load order and layout for GC subsystem**20090107125806]
80[Enhance concurrent gc to catch writes during the mark phase**20090107053908]
82[Change code version to 1.0; optimize symbol interning in serializer**20090107042700]
84[TAG ELEPHANT-1-0-A1**20090105234537]
86Patch bundle hash: