aboutgitcodelistschat:MatrixIRC
path: root/cooker/call.c
diff options
context:
space:
mode:
Diffstat (limited to 'cooker/call.c')
-rw-r--r--cooker/call.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/cooker/call.c b/cooker/call.c
index dbdc52b..19a7b7e 100644
--- a/cooker/call.c
+++ b/cooker/call.c
@@ -77,8 +77,8 @@ static union value parse_metadata(struct gluten_ctx *g, struct field *f,
} else if ((*base_offset)->type == OFFSET_NULL || (f->flags & WBUF)) {
**base_offset = tag_offset;
} else if (f->flags & MASK || add) {
- emit_bitwise(g, f->type, BITWISE_OR, offset, offset,
- tag_offset);
+ emit_bitwise(g, f->type, NULL, BITWISE_OR,
+ offset, offset, tag_offset);
} else {
emit_copy_field(g, f, offset, tag_offset);
}
@@ -337,6 +337,9 @@ bool arg_needs_temp(struct field *f, int pos, JSON_Value *jvalue,
if (json_object_get_string(tmp, "set"))
return true;
+ if (json_object_get_string(tmp, "get") && f->flags & FD)
+ return true;
+
if (level)
return true;
@@ -603,6 +606,9 @@ void handle_calls(struct gluten_ctx *g, JSON_Value *value)
}
name = json_object_get_name(obj, n);
+ if (!name)
+ continue;
+
value = json_object_get_value_at(obj, n);
args = json_object_get_object(obj, name);