summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVincent Sanders <vincent.sanders@collabora.co.uk>2012-11-21 10:22:13 +0000
committerVincent Sanders <vincent.sanders@collabora.co.uk>2012-11-21 10:22:13 +0000
commit6c86695d0c0b01f38bc266b61a46cc38c49824bb (patch)
tree22bec87d7c5e73dd2a4713775e231251034ad0cf /src
parente709f23f29d7135a71923921db6eb059826955cf (diff)
downloadnsgenbind-6c86695d0c0b01f38bc266b61a46cc38c49824bb.tar.gz
nsgenbind-6c86695d0c0b01f38bc266b61a46cc38c49824bb.tar.bz2
fix unshared type generation
Diffstat (limited to 'src')
-rw-r--r--src/jsapi-libdom-property.c11
-rw-r--r--src/nsgenbind-ast.c59
2 files changed, 42 insertions, 28 deletions
diff --git a/src/jsapi-libdom-property.c b/src/jsapi-libdom-property.c
index 4f30011..deecc5e 100644
--- a/src/jsapi-libdom-property.c
+++ b/src/jsapi-libdom-property.c
@@ -663,6 +663,9 @@ int unshared_property_cb(struct genbind_node *node, void *ctx)
type_node = genbind_node_find_type(genbind_node_getnode(node),
NULL,
GENBIND_NODE_TYPE_TYPE);
+ if (type_node == NULL) {
+ return 0;
+ }
fprintf(binding->outfile,
"static JSBool JSAPI_PROPERTYSET(%s, JSContext *cx, JSObject *obj, jsval *vp)\n",
@@ -674,9 +677,13 @@ int unshared_property_cb(struct genbind_node *node, void *ctx)
"}\n\n");
fprintf(binding->outfile,
- "static JSBool JSAPI_PROPERTYGET(%s, JSContext *cx, JSObject *obj, jsval *vp)\n"
- "{\n",
+ "static JSBool JSAPI_PROPERTYGET(%s, JSContext *cx, JSObject *obj, jsval *vp)\n",
genbind_node_gettext(type_node));
+
+ fprintf(binding->outfile,
+ "{\n"
+ " return JS_FALSE;\n"
+ "}\n\n");
return 0;
diff --git a/src/nsgenbind-ast.c b/src/nsgenbind-ast.c
index a8a8361..df6c608 100644
--- a/src/nsgenbind-ast.c
+++ b/src/nsgenbind-ast.c
@@ -197,38 +197,45 @@ int genbind_cmp_node_type(struct genbind_node *node, void *ctx)
char *genbind_node_gettext(struct genbind_node *node)
{
- switch(node->type) {
- case GENBIND_NODE_TYPE_WEBIDLFILE:
- case GENBIND_NODE_TYPE_STRING:
- case GENBIND_NODE_TYPE_PREAMBLE:
- case GENBIND_NODE_TYPE_IDENT:
- case GENBIND_NODE_TYPE_TYPE:
- case GENBIND_NODE_TYPE_BINDING_INTERFACE:
- case GENBIND_NODE_TYPE_CBLOCK:
- return node->r.text;
-
- default:
- return NULL;
+ if (node != NULL) {
+ switch(node->type) {
+ case GENBIND_NODE_TYPE_WEBIDLFILE:
+ case GENBIND_NODE_TYPE_STRING:
+ case GENBIND_NODE_TYPE_PREAMBLE:
+ case GENBIND_NODE_TYPE_IDENT:
+ case GENBIND_NODE_TYPE_TYPE:
+ case GENBIND_NODE_TYPE_BINDING_INTERFACE:
+ case GENBIND_NODE_TYPE_CBLOCK:
+ return node->r.text;
+
+ default:
+ break;
+ }
}
+ return NULL;
}
struct genbind_node *genbind_node_getnode(struct genbind_node *node)
{
- switch(node->type) {
- case GENBIND_NODE_TYPE_HDRCOMMENT:
- case GENBIND_NODE_TYPE_BINDING:
- case GENBIND_NODE_TYPE_BINDING_PRIVATE:
- case GENBIND_NODE_TYPE_BINDING_INTERNAL:
- case GENBIND_NODE_TYPE_BINDING_UNSHARED:
- case GENBIND_NODE_TYPE_OPERATION:
- case GENBIND_NODE_TYPE_API:
- case GENBIND_NODE_TYPE_GETTER:
- case GENBIND_NODE_TYPE_SETTER:
- return node->r.node;
-
- default:
- return NULL;
+ if (node != NULL) {
+ switch(node->type) {
+ case GENBIND_NODE_TYPE_HDRCOMMENT:
+ case GENBIND_NODE_TYPE_BINDING:
+ case GENBIND_NODE_TYPE_BINDING_PRIVATE:
+ case GENBIND_NODE_TYPE_BINDING_INTERNAL:
+ case GENBIND_NODE_TYPE_BINDING_UNSHARED:
+ case GENBIND_NODE_TYPE_OPERATION:
+ case GENBIND_NODE_TYPE_API:
+ case GENBIND_NODE_TYPE_GETTER:
+ case GENBIND_NODE_TYPE_SETTER:
+ return node->r.node;
+
+ default:
+ break;
+ }
}
+ return NULL;
+
}
static const char *genbind_node_type_to_str(enum genbind_node_type type)