MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

add support for key length in reflect module

+12 -11
+2 -4
src/errors.c
··· 68 68 if ((size_t)written < remaining) return used + (size_t)written; 69 69 70 70 if (!ensure_errmsg_capacity(js, used + (size_t)written + 1)) { 71 - if (++attempt >= max_attempts) { 72 - return js->errmsg_size ? js->errmsg_size - 1 : used; 73 - } 74 - } else attempt = 0; 71 + if (++attempt >= max_attempts) return js->errmsg_size ? js->errmsg_size - 1 : used; 72 + } 75 73 } 76 74 } 77 75
+1 -1
src/modules/fs.c
··· 275 275 276 276 jsval_t stat_obj = js_mkobj(req->js); 277 277 jsval_t proto = js_get_ctor_proto(req->js, "Stats", 5); 278 - if (is_special_object(proto)) js_set_proto(req->js, stat_obj, proto); 278 + if (is_object_type(proto)) js_set_proto(req->js, stat_obj, proto); 279 279 280 280 uv_stat_t *st = &uv_req->statbuf; 281 281 js_set_slot(req->js, stat_obj, SLOT_DATA, js_mknum((double)st->st_mode));
+9 -6
src/modules/reflect.c
··· 56 56 57 57 if (vtype(key) != T_STR) return js_mkfalse(); 58 58 59 - char *key_str = js_getstr(js, key, NULL); 59 + size_t key_len; 60 + char *key_str = js_getstr(js, key, &key_len); 60 61 if (!key_str) return js_mkfalse(); 61 62 62 - jsval_t val = js_get(js, target, key_str); 63 - return vtype(val) != T_UNDEF ? js_mktrue() : js_mkfalse(); 63 + jsoff_t off = lkp(js, target, key_str, key_len); 64 + return off > 0 ? js_mktrue() : js_mkfalse(); 64 65 } 65 66 66 67 static jsval_t reflect_delete_property(struct js *js, jsval_t *args, int nargs) { ··· 198 199 199 200 if (vtype(key) != T_STR) return js_mkundef(); 200 201 201 - char *key_str = js_getstr(js, key, NULL); 202 + size_t key_len; 203 + char *key_str = js_getstr(js, key, &key_len); 202 204 if (!key_str) return js_mkundef(); 203 205 204 - jsval_t value = js_get(js, target, key_str); 205 - if (vtype(value) == T_UNDEF) return js_mkundef(); 206 + jsoff_t off = lkp(js, target, key_str, key_len); 207 + if (off <= 0) return js_mkundef(); 206 208 209 + jsval_t value = js_get(js, target, key_str); 207 210 jsval_t desc = js_mkobj(js); 208 211 js_set(js, desc, "value", value); 209 212 js_set(js, desc, "writable", js_mktrue());