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