Do not allow nullable new_id
The usefulness of this is limited, and `libwayland-client` doesn't provide a way to pass a null `new_id` since the id is generated by the library and given to the caller as the return value. Signed-off-by: Ian Douglas Scott <idscott@system76.com>
This commit is contained in:
parent
13b05c9ed1
commit
971f8e4ace
|
@ -630,7 +630,7 @@ wl_closure_marshal(struct wl_object *sender, uint32_t opcode,
|
|||
break;
|
||||
case 'n':
|
||||
object = args[i].o;
|
||||
if (!arg.nullable && object == NULL)
|
||||
if (object == NULL)
|
||||
goto err_null;
|
||||
|
||||
closure->args[i].n = object ? object->id : 0;
|
||||
|
@ -799,7 +799,7 @@ wl_connection_demarshal(struct wl_connection *connection,
|
|||
id = *p++;
|
||||
closure->args[i].n = id;
|
||||
|
||||
if (id == 0 && !arg.nullable) {
|
||||
if (id == 0) {
|
||||
wl_log("NULL new ID received on non-nullable "
|
||||
"type, message %s(%s)\n", message->name,
|
||||
message->signature);
|
||||
|
|
|
@ -414,7 +414,6 @@ is_nullable_type(struct arg *arg)
|
|||
/* Strings and objects are possibly nullable */
|
||||
case STRING:
|
||||
case OBJECT:
|
||||
case NEW_ID:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
|
|
@ -245,9 +245,6 @@ TEST(connection_marshal)
|
|||
marshal(&data, "n", 12, &object);
|
||||
assert(data.buffer[2] == object.id);
|
||||
|
||||
marshal(&data, "?n", 12, NULL);
|
||||
assert(data.buffer[2] == 0);
|
||||
|
||||
array.data = (void *) text;
|
||||
array.size = sizeof text;
|
||||
marshal(&data, "a", 20, &array);
|
||||
|
|
|
@ -63,8 +63,8 @@ TEST(message_count_arrays)
|
|||
{ "middle", "iufasonh", NULL },
|
||||
{ "multiple", "aaiufaasonhaa", NULL },
|
||||
{ "leading_version", "2aaiufaasonhaa", NULL },
|
||||
{ "among_nullables", "iufsa?oa?nah", NULL },
|
||||
{ "all_mixed", "2aiufas?oa?na", NULL },
|
||||
{ "among_nullables", "iufsa?oa?sah", NULL },
|
||||
{ "all_mixed", "2aiufas?oa?sa", NULL },
|
||||
};
|
||||
const struct {
|
||||
const struct wl_message *message;
|
||||
|
|
Loading…
Reference in New Issue
Block a user