ugly goto removed

This commit is contained in:
zimoch
2010-10-20 13:21:28 +00:00
parent 7cc19d2614
commit a3e68d7f7d

View File

@ -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