diff options
author | Vincent Sanders <vincent.sanders@collabora.co.uk> | 2012-11-15 20:10:21 +0000 |
---|---|---|
committer | Vincent Sanders <vincent.sanders@collabora.co.uk> | 2012-11-15 20:10:21 +0000 |
commit | 52a0b403fca3b37434c7ed5343d25dcae8734e0b (patch) | |
tree | b5629faaadef2d4e9d136a3b4e22eba3c7b8e78a /src/jsapi-libdom-operator.c | |
parent | 257f535bd18de9a6fc4e9d90303939706a783732 (diff) | |
download | nsgenbind-52a0b403fca3b37434c7ed5343d25dcae8734e0b.tar.gz nsgenbind-52a0b403fca3b37434c7ed5343d25dcae8734e0b.tar.bz2 |
correctly construct properties and functions so enumeration is correct. Seems to be an issue setting functions to be enumerable so left disabled for now
Diffstat (limited to 'src/jsapi-libdom-operator.c')
-rw-r--r-- | src/jsapi-libdom-operator.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/jsapi-libdom-operator.c b/src/jsapi-libdom-operator.c index 2bb64d4..c3084f7 100644 --- a/src/jsapi-libdom-operator.c +++ b/src/jsapi-libdom-operator.c @@ -33,8 +33,9 @@ static int webidl_func_spec_cb(struct webidl_node *node, void *ctx) */ } else { fprintf(binding->outfile, - "\tJSAPI_FS(%s, 0, 0),\n", + "\tJSAPI_FS(%s, 0, 0 /* JSPROP_ENUMERATE */),\n", webidl_node_gettext(ident_node)); + /* @todo number of args to that FN_FS() call should be correct */ } return 0; } @@ -640,16 +641,24 @@ output_operation_input(struct binding *binding, case WEBIDL_TYPE_STRING: /* JSString * */ fprintf(binding->outfile, + "\tif (argc > %d) {\n" "\t%s_jsstr = JS_ValueToString(cx, argv[%d]);\n" "\tif (%s_jsstr == NULL) {\n" "\t\treturn JS_FALSE;\n" "\t}\n\n" - "\tJSString_to_char(%s_jsstr, %s, %s_len);\n", + "\tJSString_to_char(%s_jsstr, %s, %s_len);\n" + "\t} else {\n" + "\t\t%s = NULL;" + "\t\t%s_len = 0;" + "\t}\n", + arg_cur, webidl_node_gettext(arg_ident), arg_cur, webidl_node_gettext(arg_ident), webidl_node_gettext(arg_ident), webidl_node_gettext(arg_ident), + webidl_node_gettext(arg_ident), + webidl_node_gettext(arg_ident), webidl_node_gettext(arg_ident)); break; |