Fix crash when trying to convert StringType to PointType

This commit is contained in:
jacksonmj
2013-09-27 19:41:12 +01:00
parent 44b7c4f8f4
commit ceca61114a

View File

@@ -48,6 +48,13 @@ AnyType::operator StringType()
{ {
return StringType(*((std::string*)value)); return StringType(*((std::string*)value));
} }
else if (type == TypePoint && value)
{
ui::Point thisPoint = *((ui::Point*)value);
std::stringstream pointStream;
pointStream << thisPoint.X << "," << thisPoint.Y;
return StringType(pointStream.str());
}
else else
throw InvalidConversionException(type, TypeString); throw InvalidConversionException(type, TypeString);
@@ -61,10 +68,13 @@ AnyType::operator PointType()
} }
else if(type == TypeString) else if(type == TypeString)
{ {
ui::Point thisPoint = *((ui::Point*)value); std::stringstream pointStream(*((std::string*)value));
std::stringstream pointStream; int x, y;
pointStream << thisPoint.X << "," << thisPoint.Y; char comma;
return StringType(pointStream.str()); pointStream >> x >> comma >> y;
if (pointStream.fail() || comma != ',')
throw InvalidConversionException(type, TypePoint);
return PointType(ui::Point(x, y));
} }
else else
throw InvalidConversionException(type, TypePoint); throw InvalidConversionException(type, TypePoint);