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:
Ian Douglas Scott 2022-07-14 08:36:21 -07:00
parent 13b05c9ed1
commit 971f8e4ace
4 changed files with 4 additions and 8 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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;