1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-09-20 01:46:15 -04:00

[spidermonkey] Set result for setter and deletter

This commit is contained in:
Witold Filipczyk 2024-06-29 10:16:51 +02:00
parent 8d7ec1a81c
commit 348725ee3a

View File

@ -129,18 +129,18 @@ dataset_obj_setProperty(JSContext* ctx, JS::HandleObject obj, JS::HandleId id, J
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS::GetRealmPrivate(comp); struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS::GetRealmPrivate(comp);
if (!id.isString()) { if (!id.isString()) {
return true; return result.failInvalidDescriptor();
} }
char *property = jsid_to_string(ctx, id); char *property = jsid_to_string(ctx, id);
if (!property) { if (!property) {
return true; return result.failInvalidDescriptor();
} }
char *value = jsval_to_string(ctx, v); char *value = jsval_to_string(ctx, v);
if (!value) { if (!value) {
mem_free(property); mem_free(property);
return true; return result.failInvalidDescriptor();
} }
dom_node *el = JS::GetMaybePtrFromReservedSlot<dom_node>(obj, 0); dom_node *el = JS::GetMaybePtrFromReservedSlot<dom_node>(obj, 0);
struct string data; struct string data;
@ -148,7 +148,7 @@ dataset_obj_setProperty(JSContext* ctx, JS::HandleObject obj, JS::HandleId id, J
if (!el ||!init_string(&data)) { if (!el ||!init_string(&data)) {
mem_free(property); mem_free(property);
mem_free(value); mem_free(value);
return true; return result.failInvalidDescriptor();
} }
camel_to_html(&data, property); camel_to_html(&data, property);
mem_free(property); mem_free(property);
@ -159,7 +159,7 @@ dataset_obj_setProperty(JSContext* ctx, JS::HandleObject obj, JS::HandleId id, J
if (exc != DOM_NO_ERR || !attr_name) { if (exc != DOM_NO_ERR || !attr_name) {
mem_free(value); mem_free(value);
return true; return result.failInvalidDescriptor();
} }
dom_string *attr_value = NULL; dom_string *attr_value = NULL;
exc = dom_string_create(value, strlen(value), &attr_value); exc = dom_string_create(value, strlen(value), &attr_value);
@ -167,14 +167,14 @@ dataset_obj_setProperty(JSContext* ctx, JS::HandleObject obj, JS::HandleId id, J
if (exc != DOM_NO_ERR || !attr_value) { if (exc != DOM_NO_ERR || !attr_value) {
dom_string_unref(attr_name); dom_string_unref(attr_name);
return true; return result.failInvalidDescriptor();
} }
exc = dom_element_set_attribute(el, attr_name, attr_value); exc = dom_element_set_attribute(el, attr_name, attr_value);
dom_string_unref(attr_name); dom_string_unref(attr_name);
dom_string_unref(attr_value); dom_string_unref(attr_value);
interpreter->changed = true; interpreter->changed = true;
return true; return result.succeed();
} }
static bool static bool
@ -193,19 +193,19 @@ dataset_obj_deleteProperty(JSContext* ctx, JS::HandleObject obj, JS::HandleId id
} }
struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS::GetRealmPrivate(comp); struct ecmascript_interpreter *interpreter = (struct ecmascript_interpreter *)JS::GetRealmPrivate(comp);
if (!id.isString()) { if (!id.isString()) {
return true; return result.failCantDelete();
} }
char *property = jsid_to_string(ctx, id); char *property = jsid_to_string(ctx, id);
if (!property) { if (!property) {
return true; return result.failCantDelete();
} }
dom_node *el = JS::GetMaybePtrFromReservedSlot<dom_node>(obj, 0); dom_node *el = JS::GetMaybePtrFromReservedSlot<dom_node>(obj, 0);
struct string data; struct string data;
if (!el ||!init_string(&data)) { if (!el ||!init_string(&data)) {
mem_free(property); mem_free(property);
return true; return result.failCantDelete();
} }
camel_to_html(&data, property); camel_to_html(&data, property);
mem_free(property); mem_free(property);
@ -215,14 +215,14 @@ dataset_obj_deleteProperty(JSContext* ctx, JS::HandleObject obj, JS::HandleId id
done_string(&data); done_string(&data);
if (exc != DOM_NO_ERR || !attr_name) { if (exc != DOM_NO_ERR || !attr_name) {
return true; return result.failCantDelete();
} }
dom_string *attr_value = NULL; dom_string *attr_value = NULL;
exc = dom_element_remove_attribute(el, attr_name); exc = dom_element_remove_attribute(el, attr_name);
dom_string_unref(attr_name); dom_string_unref(attr_name);
interpreter->changed = true; interpreter->changed = true;
return true; return result.succeed();
} }
JSClassOps dataset_ops = { JSClassOps dataset_ops = {