From 5159452335487f8d2150df416af32acc71f04e4c Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Sun, 19 Jul 2015 23:03:46 -0700 Subject: [PATCH] Fixing invalid vector usage and strange picking crash --- interface/src/Stars.cpp | 2 +- libraries/shared/src/RegisteredMetaTypes.cpp | 22 ++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/interface/src/Stars.cpp b/interface/src/Stars.cpp index 02c4ffd32f..87000b40a4 100644 --- a/interface/src/Stars.cpp +++ b/interface/src/Stars.cpp @@ -126,7 +126,7 @@ void Stars::render(RenderArgs* renderArgs, float alpha) { srand(STARFIELD_SEED); unsigned limit = STARFIELD_NUM_STARS; std::vector points; - points.reserve(limit); + points.resize(limit); for (size_t star = 0; star < limit; ++star) { points[star] = fromPolar(randPolar()); //auto color = computeStarColor(STAR_COLORIZATION); diff --git a/libraries/shared/src/RegisteredMetaTypes.cpp b/libraries/shared/src/RegisteredMetaTypes.cpp index dce31b2971..de684dced1 100644 --- a/libraries/shared/src/RegisteredMetaTypes.cpp +++ b/libraries/shared/src/RegisteredMetaTypes.cpp @@ -210,15 +210,25 @@ QScriptValue pickRayToScriptValue(QScriptEngine* engine, const PickRay& pickRay) void pickRayFromScriptValue(const QScriptValue& object, PickRay& pickRay) { QScriptValue originValue = object.property("origin"); if (originValue.isValid()) { - pickRay.origin.x = originValue.property("x").toVariant().toFloat(); - pickRay.origin.y = originValue.property("y").toVariant().toFloat(); - pickRay.origin.z = originValue.property("z").toVariant().toFloat(); + auto x = originValue.property("x"); + auto y = originValue.property("y"); + auto z = originValue.property("z"); + if (x.isValid() && y.isValid() && z.isValid()) { + pickRay.origin.x = x.toVariant().toFloat(); + pickRay.origin.y = y.toVariant().toFloat(); + pickRay.origin.z = z.toVariant().toFloat(); + } } QScriptValue directionValue = object.property("direction"); if (directionValue.isValid()) { - pickRay.direction.x = directionValue.property("x").toVariant().toFloat(); - pickRay.direction.y = directionValue.property("y").toVariant().toFloat(); - pickRay.direction.z = directionValue.property("z").toVariant().toFloat(); + auto x = directionValue.property("x"); + auto y = directionValue.property("y"); + auto z = directionValue.property("z"); + if (x.isValid() && y.isValid() && z.isValid()) { + pickRay.direction.x = x.toVariant().toFloat(); + pickRay.direction.y = y.toVariant().toFloat(); + pickRay.direction.z = z.toVariant().toFloat(); + } } }