History

V8 fixes, including calls and signals

ksuprynowicz committed 3 years ago

Commit 5099e681 parent c8898e811 files · +73 −19Browse files

Showing the changes to libraries/script-engine/src/ScriptValueUtils.cpp (1 of 11 files). Show all

Unified · Split

libraries/script-engine/src/ScriptValueUtils.cpp+23−1
@@ -188,6 +188,7 @@ ScriptValue vec3ColorToScriptValue(ScriptEngine* engine, const glm::vec3& vec3) · 187 unmodified lines
188188 return value;
189189 }
190190
191+// V8TODO: add similar checks to rest of the conversions
191192 bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) {
192193 if (object.isNumber()) {
193194 vec3 = glm::vec3(object.toVariant().toFloat());
@@ -197,6 +198,8 @@ bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { · 3 unmodified lines
197198 vec3.x = qColor.red();
198199 vec3.y = qColor.green();
199200 vec3.z = qColor.blue();
201+ } else {
202+ return false;
200203 }
201204 } else if (object.isArray()) {
202205 QVariantList list = object.toVariant().toList();
@@ -204,8 +207,10 @@ bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { · 1 unmodified line
204207 vec3.x = list[0].toFloat();
205208 vec3.y = list[1].toFloat();
206209 vec3.z = list[2].toFloat();
210+ } else {
211+ return false;
207212 }
208− } else {
213+ } else if (object.isObject()) {
209214 ScriptValue x = object.property("x");
210215 if (!x.isValid()) {
211216 x = object.property("r");
@@ -230,9 +235,15 @@ bool vec3FromScriptValue(const ScriptValue& object, glm::vec3& vec3) { · 18 unmodified lines
230235 z = object.property("blue");
231236 }
232237
238+ if (!x.isValid() || !y.isValid() || !z.isValid()) {
239+ return false;
240+ }
241+
233242 vec3.x = x.toVariant().toFloat();
234243 vec3.y = y.toVariant().toFloat();
235244 vec3.z = z.toVariant().toFloat();
245+ } else {
246+ return false;
236247 }
237248 return true;
238249 }
@@ -446,7 +457,18 @@ ScriptValue quatToScriptValue(ScriptEngine* engine, const glm::quat& quat) { · 207 unmodified lines
446457 return obj;
447458 }
448459
460+// V8TODO: add similar check to other conversions
449461 bool quatFromScriptValue(const ScriptValue& object, glm::quat& quat) {
462+ if (!object.isObject()) {
463+ return false;
464+ }
465+ QVariant x = object.property("x").toVariant();
466+ QVariant y = object.property("y").toVariant();
467+ QVariant z = object.property("z").toVariant();
468+ QVariant w = object.property("w").toVariant();
469+ if (!x.isValid() || !y.isValid() || !z.isValid() || !w.isValid()) {
470+ return false;
471+ }
450472 quat.x = object.property("x").toVariant().toFloat();
451473 quat.y = object.property("y").toVariant().toFloat();
452474 quat.z = object.property("z").toVariant().toFloat();

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t