From 9a454bea6891e60caedab8b86cdf75b21a9dfd60 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Tue, 25 Sep 2018 10:56:57 -0500 Subject: [PATCH] Restore the ability to write to mbbi/mbbo *VL fields Fixes lp: #1794196 --- modules/database/src/std/rec/mbbiRecord.c | 24 +++++++++++++---------- modules/database/src/std/rec/mbboRecord.c | 24 +++++++++++++---------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/modules/database/src/std/rec/mbbiRecord.c b/modules/database/src/std/rec/mbbiRecord.c index d04161d56..5995288e0 100644 --- a/modules/database/src/std/rec/mbbiRecord.c +++ b/modules/database/src/std/rec/mbbiRecord.c @@ -217,16 +217,6 @@ static long special(DBADDR *paddr, int after) switch (paddr->special) { case SPC_MOD: - if (fieldIndex >= mbbiRecordZRST && fieldIndex <= mbbiRecordFFST) { - int event = DBE_PROPERTY; - - if (!after) return 0; - init_common(prec); - if (prec->val == fieldIndex - mbbiRecordZRST) - event |= DBE_VALUE | DBE_LOG; - db_post_events(prec, &prec->val, event); - return 0; - } if (fieldIndex == mbbiRecordSIMM) { if (!after) recGblSaveSimm(prec->sscn, &prec->oldsimm, prec->simm); @@ -234,6 +224,20 @@ static long special(DBADDR *paddr, int after) recGblCheckSimm((dbCommon *)prec, &prec->sscn, prec->oldsimm, prec->simm); return 0; } + + if (!after) + return 0; + init_common(prec); + /* Note: ZRVL..FFVL are also SPC_MOD */ + if (fieldIndex >= mbbiRecordZRST && fieldIndex <= mbbiRecordFFST) { + int event = DBE_PROPERTY; + + if (prec->val == fieldIndex - mbbiRecordZRST) + event |= DBE_VALUE | DBE_LOG; + db_post_events(prec, &prec->val, event); + } + return 0; + default: recGblDbaddrError(S_db_badChoice, paddr, "mbbi: special"); return S_db_badChoice; diff --git a/modules/database/src/std/rec/mbboRecord.c b/modules/database/src/std/rec/mbboRecord.c index 2e2a35bb2..e70838071 100644 --- a/modules/database/src/std/rec/mbboRecord.c +++ b/modules/database/src/std/rec/mbboRecord.c @@ -273,16 +273,6 @@ static long special(DBADDR *paddr, int after) switch (paddr->special) { case SPC_MOD: - if (fieldIndex >= mbboRecordZRST && fieldIndex <= mbboRecordFFST) { - int event = DBE_PROPERTY; - - if (!after) return 0; - init_common(prec); - if (prec->val == fieldIndex - mbboRecordZRST) - event |= DBE_VALUE | DBE_LOG; - db_post_events(prec, &prec->val, event); - return 0; - } if (fieldIndex == mbboRecordSIMM) { if (!after) recGblSaveSimm(prec->sscn, &prec->oldsimm, prec->simm); @@ -290,6 +280,20 @@ static long special(DBADDR *paddr, int after) recGblCheckSimm((dbCommon *)prec, &prec->sscn, prec->oldsimm, prec->simm); return 0; } + + if (!after) + return 0; + init_common(prec); + /* Note: ZRVL..FFVL are also SPC_MOD */ + if (fieldIndex >= mbboRecordZRST && fieldIndex <= mbboRecordFFST) { + int event = DBE_PROPERTY; + + if (prec->val == fieldIndex - mbboRecordZRST) + event |= DBE_VALUE | DBE_LOG; + db_post_events(prec, &prec->val, event); + } + return 0; + default: recGblDbaddrError(S_db_badChoice, paddr, "mbbo: special"); return S_db_badChoice;