for (i = 0; i < array->length; i++) {
value = &array->start[i];
- if (njs_is_valid(value) && !njs_is_string(value)) {
+ if (!njs_is_string(value)
+ && njs_is_valid(value)
+ && !njs_is_null_or_void(value))
+ {
max++;
}
}
for (i = 0; i < array->length; i++) {
value = &array->start[i];
- if (njs_is_valid(value) && !njs_is_string(value)) {
+ if (!njs_is_string(value)
+ && njs_is_valid(value)
+ && !njs_is_null_or_void(value))
+ {
values[n++] = *value;
if (n >= max) {
for (i = 0; i < array->length; i++) {
value = &array->start[i];
- if (njs_is_valid(value)) {
+ if (njs_is_valid(value) && !njs_is_null_or_void(value)) {
if (!njs_is_string(value)) {
value = &values[n++];
for (i = 0; i < array->length; i++) {
value = &array->start[i];
- if (njs_is_valid(value)) {
+ if (njs_is_valid(value) && !njs_is_null_or_void(value)) {
if (!njs_is_string(value)) {
value = &values[n++];
}
{ nxt_string("a = []; a[5] = 5; a.join()"),
nxt_string(",,,,,5") },
+ { nxt_string("var a = [,null,undefined,false,true,0,1]; a.join()"),
+ nxt_string(",,,false,true,0,1") },
+
+ { nxt_string("var o = { toString: function() { return null } };"
+ "[o].join()"),
+ nxt_string("null") },
+
+ { nxt_string("var o = { toString: function() { return undefined } };"
+ "[o].join()"),
+ nxt_string("undefined") },
+
{ nxt_string("a = []; a[5] = 5; a"),
nxt_string(",,,,,5") },