ugly goto removed
This commit is contained in:
@ -1053,7 +1053,6 @@ bool Stream::
|
|||||||
matchValue(const StreamFormat& format, const void* fieldaddress)
|
matchValue(const StreamFormat& format, const void* fieldaddress)
|
||||||
{
|
{
|
||||||
// this function must increase consumedInput
|
// this function must increase consumedInput
|
||||||
// [I use goto and feel very ashamed for it.]
|
|
||||||
long consumed;
|
long consumed;
|
||||||
long lval;
|
long lval;
|
||||||
double dval;
|
double dval;
|
||||||
@ -1077,29 +1076,25 @@ matchValue(const StreamFormat& format, const void* fieldaddress)
|
|||||||
case long_format:
|
case long_format:
|
||||||
{
|
{
|
||||||
consumed = scanValue(format, lval);
|
consumed = scanValue(format, lval);
|
||||||
if (consumed < 0) goto noMoreElements;
|
if (consumed >= 0) ((epicsInt32*)buffer)[nord] = lval;
|
||||||
((epicsInt32*)buffer)[nord] = lval;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case enum_format:
|
case enum_format:
|
||||||
{
|
{
|
||||||
consumed = scanValue(format, lval);
|
consumed = scanValue(format, lval);
|
||||||
if (consumed < 0) goto noMoreElements;
|
if (consumed >= 0) ((epicsUInt16*)buffer)[nord] = (epicsUInt16)lval;
|
||||||
((epicsUInt16*)buffer)[nord] = (epicsUInt16)lval;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case double_format:
|
case double_format:
|
||||||
{
|
{
|
||||||
consumed = scanValue(format, dval);
|
consumed = scanValue(format, dval);
|
||||||
if (consumed < 0) goto noMoreElements;
|
if (consumed >= 0) ((epicsFloat64*)buffer)[nord] = dval;
|
||||||
((epicsFloat64*)buffer)[nord] = dval;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case string_format:
|
case string_format:
|
||||||
{
|
{
|
||||||
consumed = scanValue(format,
|
consumed = scanValue(format,
|
||||||
buffer+MAX_STRING_SIZE*nord, MAX_STRING_SIZE);
|
buffer+MAX_STRING_SIZE*nord, MAX_STRING_SIZE);
|
||||||
if (consumed < 0) goto noMoreElements;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -1107,9 +1102,9 @@ matchValue(const StreamFormat& format, const void* fieldaddress)
|
|||||||
"Illegal format type\n", name());
|
"Illegal format type\n", name());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (consumed < 0) break;
|
||||||
consumedInput += consumed;
|
consumedInput += consumed;
|
||||||
}
|
}
|
||||||
noMoreElements:
|
|
||||||
if (!nord)
|
if (!nord)
|
||||||
{
|
{
|
||||||
// scan error: set other record to alarm status
|
// scan error: set other record to alarm status
|
||||||
|
Reference in New Issue
Block a user