summaryrefslogtreecommitdiff
path: root/src/duk-libdom-generated.c
diff options
context:
space:
mode:
authorJohn-Mark Bell <jmb@netsurf-browser.org>2016-02-01 20:14:34 +0000
committerJohn-Mark Bell <jmb@netsurf-browser.org>2016-02-01 20:14:34 +0000
commit66e9aa8d66aae27098693554d26100417606164b (patch)
treeaffd18b5ffc14f2742e7cb1ab8c5da80cbbd9bf7 /src/duk-libdom-generated.c
parentb0b8fe9acf002cbfeb68873cac6e01345e173fa8 (diff)
downloadnsgenbind-66e9aa8d66aae27098693554d26100417606164b.tar.gz
nsgenbind-66e9aa8d66aae27098693554d26100417606164b.tar.bz2
Add support for TreatNullAs=EmptyString extended attribute.
Diffstat (limited to 'src/duk-libdom-generated.c')
-rw-r--r--src/duk-libdom-generated.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/duk-libdom-generated.c b/src/duk-libdom-generated.c
index 0790e00..9305dcf 100644
--- a/src/duk-libdom-generated.c
+++ b/src/duk-libdom-generated.c
@@ -262,8 +262,21 @@ output_generated_attribute_setter(FILE* outf,
"\tdom_exception exc;\n"
"\tdom_string *str;\n"
"\tduk_size_t slen;\n"
- "\tconst char *s;\n"
- "\ts = duk_safe_to_lstring(ctx, 0, &slen);\n"
+ "\tconst char *s;\n");
+ if ((atributee->treatnullas != NULL) &&
+ (strcmp(atributee->treatnullas, "EmptyString") == 0)) {
+ fprintf(outf,
+ "\tif (duk_is_null(ctx, 0)) {\n"
+ "\t\ts = \"\";\n"
+ "\t\tslen = 0;\n"
+ "\t} else {\n"
+ "\t\ts = duk_safe_to_lstring(ctx, 0, &slen);\n"
+ "\t}\n");
+ } else {
+ fprintf(outf,
+ "\ts = duk_safe_to_lstring(ctx, 0, &slen);\n");
+ }
+ fprintf(outf,
"\n"
"\texc = dom_string_create((const uint8_t *)s, slen, &str);\n"
"\tif (exc != DOM_NO_ERR) {\n"