Finally put is fixed as well. I changed dbPut to set the target to INVALID/LINK if the target is a scalar and 0 elements are put. Only the target record goes to alarm state, not the sending record.
The target is then processed normally if the link is PP, as before only that before if was processed with no alarm and value 0.
If the target happens to be an array of max length 1, it is set to an empty array and not to alarm. For that I always use now the array implementation if the target is a SPC_DBADDR field with array_info(), even if the target has only 1 element. That allowed me to streamline the dbPut code a bit.
This change works for db links, CA links and as well for `caput -a 0` (empty array put) to a scalar field. Is it ok to call this case a "LINK_ALARM"? I cannot really distinguish between caput and any other put in dbPut. An alternative would be to check the target in the CA server and report an error to the caller when trying to put an empty array into a scalar. But that would probably affect CA links as well and generate an error in the sending record.
--
https://code.launchpad.net/~dirk.zimoch/epics-base/+git/epics-base/+merge/386175
Your team EPICS Core Developers is subscribed to branch epics-base:7.0.
- References:
- [Merge] ~dirk.zimoch/epics-base:fix_zero_size_arrays into epics-base:7.0 Dirk Zimoch via Core-talk
- Navigate by Date:
- Prev:
Build failed: epics-base base-7.0-578 AppVeyor via Core-talk
- Next:
[Bug 1884339] Re: Inaccessible CA servers on Windows Andrew Johnson via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: [Merge] ~dirk.zimoch/epics-base:fix_zero_size_arrays into epics-base:7.0 Dirk Zimoch via Core-talk
- Next:
Re: [Merge] ~dirk.zimoch/epics-base:fix_zero_size_arrays into epics-base:7.0 Dirk Zimoch via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
<2020>
2021
2022
2023
2024
|