From: Dmitry Y. <di...@us...> - 2007-10-31 12:00:32
|
Build Version : T2.1.0.17029 Firebird 2.1 Beta 2 (writeBuildNum.sh,v 1.17187 2007/10/31 12:00:24 dimitr Exp ) Update of /cvsroot/firebird/firebird2/src/jrd In directory sc8-pr-cvs17:/tmp/cvs-serv24378 Modified Files: vio.cpp Log Message: Fixed the server crash that appeared after a recent restore.epp commit by Nickolay. Now a domain can be altered while not being linked to a particilar relation yet. Index: vio.cpp =================================================================== RCS file: /cvsroot/firebird/firebird2/src/jrd/vio.cpp,v retrieving revision 1.194 retrieving revision 1.195 diff -b -U3 -r1.194 -r1.195 --- vio.cpp 26 Aug 2007 09:05:25 -0000 1.194 +++ vio.cpp 31 Oct 2007 12:00:16 -0000 1.195 @@ -2255,6 +2255,7 @@ MET_change_fields(tdbb, transaction, &desc1); EVL_field(0, new_rpb->rpb_record, f_fld_name, &desc2); DeferredWork* dw = MET_change_fields(tdbb, transaction, &desc2); + if (dw) { // Did we convert computed field into physical, stored field? // If we did, then force the deletion of the dependencies. // Warning: getting the result of MET_change_fields is the last relation @@ -2263,8 +2264,11 @@ dsc desc3, desc4; bool rc1 = EVL_field(0, org_rpb->rpb_record, f_fld_computed, &desc3); bool rc2 = EVL_field(0, new_rpb->rpb_record, f_fld_computed, &desc4); - if (rc1 != rc2 || rc1 && MOV_compare(&desc3, &desc4)) - DFW_post_work_arg(transaction, dw, &desc1, 0)->dfw_type = dfw_arg_force_computed; + if (rc1 != rc2 || rc1 && MOV_compare(&desc3, &desc4)) { + dw = DFW_post_work_arg(transaction, dw, &desc1, 0); + dw->dfw_type = dfw_arg_force_computed; + } + } DFW_post_work(transaction, dfw_modify_field, &desc1, 0); } |