fix(PIVariant): add missing break in setValueFromString switch
Three complex type cases (pivComplexf, pivComplexd, pivComplexld) lacked break statements, causing fallthrough to pivTime. Setting a complex variant from string silently overwrote the value with PITime::fromString(), corrupting the variant's type and data.
This commit is contained in:
@@ -133,15 +133,15 @@ void PIVariant::setValueFromString(const PIString & v) {
|
|||||||
case PIVariant::pivComplexf: {
|
case PIVariant::pivComplexf: {
|
||||||
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
|
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
|
||||||
setValue(complexf(sl.size() > 0 ? sl[0].toFloat() : 0.f, sl.size() > 1 ? sl[1].toFloat() : 0.f));
|
setValue(complexf(sl.size() > 0 ? sl[0].toFloat() : 0.f, sl.size() > 1 ? sl[1].toFloat() : 0.f));
|
||||||
}
|
} break;
|
||||||
case PIVariant::pivComplexd: {
|
case PIVariant::pivComplexd: {
|
||||||
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
|
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
|
||||||
setValue(complexd(sl.size() > 0 ? sl[0].toDouble() : 0., sl.size() > 1 ? sl[1].toDouble() : 0.));
|
setValue(complexd(sl.size() > 0 ? sl[0].toDouble() : 0., sl.size() > 1 ? sl[1].toDouble() : 0.));
|
||||||
}
|
} break;
|
||||||
case PIVariant::pivComplexld: {
|
case PIVariant::pivComplexld: {
|
||||||
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
|
PIStringList sl = v.mid(1, v.size_s() - 2).split(';');
|
||||||
setValue(complexld(sl.size() > 0 ? sl[0].toLDouble() : 0.L, sl.size() > 1 ? sl[1].toLDouble() : 0.L));
|
setValue(complexld(sl.size() > 0 ? sl[0].toLDouble() : 0.L, sl.size() > 1 ? sl[1].toLDouble() : 0.L));
|
||||||
}
|
} break;
|
||||||
case PIVariant::pivTime: {
|
case PIVariant::pivTime: {
|
||||||
setValue(PITime::fromString(v));
|
setValue(PITime::fromString(v));
|
||||||
} break;
|
} break;
|
||||||
|
|||||||
Reference in New Issue
Block a user