1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 <2007> 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 <2007> 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: A patch for medm |
From: | Kate Feng <[email protected]> |
To: | Andrew Johnson <[email protected]> |
Cc: | [email protected] |
Date: | Thu, 06 Dec 2007 13:51:48 -0500 |
Kate Feng wrote:
MEDM version 3.03 :
When I defined only three states for a mbbo record, the following warning message will pop up whenever CA is connected.
menuUpdateValueCb: Got state 3. Only have strings for 3 states (starting at 0). Kate:Mset_formatmode
Your record has three state strings for states #0, 1 and 2, but the VAL field is set to 3 which does not correspond to a valid state. Either you need to define a fourth state string, or change the record so it is never set to the value 3. This is not a bug in MEDM.
At this point, I do not have time to trace down all the source code b/c I am in the middle of urgent task. However, I think there is a bug either in EPICS base (more likely) or in MEDM because my S/W set the VAL field to be 2 at init_mbbo_record(). It was never set to 3 at my part of software. However, apparently, either EPICS base or MEDM set it to be 3.
Regards, Kate
A minor patch stops the warining message:
diff -c -u medmMenu.c.orig medmMenu.c
--- medmMenu.c.orig Tue Jun 10 12:13:27 2003 +++ medmMenu.c Thu Nov 29 07:24:48 2007 @@ -510,7 +510,7 @@ XmNnumChildren,&numChildren, NULL); i = (int) pr->value; - if((i >=0) && (i < (int) numChildren)) { + if((i >=0) && (i <= (int) numChildren)) {
This change would add an off-by-one bug to MEDM, which we will not do. As the warning message states, there are only three defined states for this record starting at state number 0. With your fix in place, try putting the integer value 4 into that MBBO record and you'll get the same problem, showing that you haven't fixed what you think you have.
- Andrew