diff options
Diffstat (limited to 'fxjs')
-rw-r--r-- | fxjs/cfxjse_value.cpp | 16 | ||||
-rw-r--r-- | fxjs/cfxjse_value.h | 5 |
2 files changed, 11 insertions, 10 deletions
diff --git a/fxjs/cfxjse_value.cpp b/fxjs/cfxjse_value.cpp index 471d85cf76..68c82e5deb 100644 --- a/fxjs/cfxjse_value.cpp +++ b/fxjs/cfxjse_value.cpp @@ -102,16 +102,14 @@ void CFXJSE_Value::SetHostObject(CFXJSE_HostObject* lpObject, m_hValue.Reset(m_pIsolate, hObject); } -void CFXJSE_Value::SetArray(uint32_t uValueCount, CFXJSE_Value** rgValues) { +void CFXJSE_Value::SetArray( + const std::vector<std::unique_ptr<CFXJSE_Value>>& values) { CFXJSE_ScopeUtil_IsolateHandleRootContext scope(m_pIsolate); - v8::Local<v8::Array> hArrayObject = v8::Array::New(m_pIsolate, uValueCount); - if (rgValues) { - for (uint32_t i = 0; i < uValueCount; i++) { - if (rgValues[i]) { - hArrayObject->Set(i, v8::Local<v8::Value>::New( - m_pIsolate, rgValues[i]->DirectGetValue())); - } - } + v8::Local<v8::Array> hArrayObject = v8::Array::New(m_pIsolate, values.size()); + uint32_t count = 0; + for (auto& v : values) { + hArrayObject->Set(count++, v8::Local<v8::Value>::New( + m_pIsolate, v.get()->DirectGetValue())); } m_hValue.Reset(m_pIsolate, hArrayObject); } diff --git a/fxjs/cfxjse_value.h b/fxjs/cfxjse_value.h index 487cf0c6e8..f2ebdc1c25 100644 --- a/fxjs/cfxjse_value.h +++ b/fxjs/cfxjse_value.h @@ -7,6 +7,9 @@ #ifndef FXJS_CFXJSE_VALUE_H_ #define FXJS_CFXJSE_VALUE_H_ +#include <memory> +#include <vector> + #include "core/fxcrt/fx_string.h" #include "core/fxcrt/fx_system.h" #include "fxjs/cfxjse_isolatetracker.h" @@ -52,7 +55,7 @@ class CFXJSE_Value { void SetObject(CFXJSE_HostObject* lpObject, CFXJSE_Class* pClass); void SetHostObject(CFXJSE_HostObject* lpObject, CFXJSE_Class* lpClass); - void SetArray(uint32_t uValueCount, CFXJSE_Value** rgValues); + void SetArray(const std::vector<std::unique_ptr<CFXJSE_Value>>& values); void SetDate(double dDouble); bool GetObjectProperty(const CFX_ByteStringC& szPropName, |