Add a helper for getting array length: tf_util_get_length.

git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3925 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
2022-07-09 15:13:35 +00:00
parent 982b5817a2
commit 7f350a3d87
8 changed files with 86 additions and 102 deletions

View File

@ -239,23 +239,14 @@ static bool _serialize_storeInternal(tf_task_t* task, tf_taskstub_t* to, buffer_
else if (JS_IsArray(tf_task_get_context(task), value))
{
_serialize_writeInt32(buffer, kArray);
JSValue length_val = JS_GetPropertyStr(tf_task_get_context(task), value, "length");
int length;
if (JS_ToInt32(tf_task_get_context(task), &length, length_val) == 0)
int length = tf_util_get_length(tf_task_get_context(task), value);
_serialize_writeInt32(buffer, length);
for (int i = 0; i < length; ++i)
{
_serialize_writeInt32(buffer, length);
for (int i = 0; i < length; ++i)
{
JSValue element = JS_GetPropertyUint32(tf_task_get_context(task), value, i);
_serialize_storeInternal(task, to, buffer, element, depth + 1);
JS_FreeValue(context, element);
}
JSValue element = JS_GetPropertyUint32(tf_task_get_context(task), value, i);
_serialize_storeInternal(task, to, buffer, element, depth + 1);
JS_FreeValue(context, element);
}
else
{
_serialize_writeInt32(buffer, 0);
}
JS_FreeValue(tf_task_get_context(task), length_val);
}
else if (JS_IsFunction(tf_task_get_context(task), value))
{