toolchain: xpcg: fix buffer length output not being set
This commit is contained in:
@@ -542,6 +542,11 @@ static int emit_interface_msg_function_send_impl(
|
|||||||
emit(ctx, ": KERN_HANDLE_INVALID;\n");
|
emit(ctx, ": KERN_HANDLE_INVALID;\n");
|
||||||
break;
|
break;
|
||||||
case TYPE_BUFFER:
|
case TYPE_BUFFER:
|
||||||
|
emit(ctx,
|
||||||
|
"*out_%s_len = msg_data.msg_response.%s_len;\n",
|
||||||
|
param->p_name,
|
||||||
|
param->p_name);
|
||||||
|
break;
|
||||||
case TYPE_STRING:
|
case TYPE_STRING:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -627,13 +632,17 @@ static int emit_interface_msg_function_send(
|
|||||||
break;
|
break;
|
||||||
case TYPE_STRING:
|
case TYPE_STRING:
|
||||||
emit(ctx,
|
emit(ctx,
|
||||||
"char *out_%s,\nsize_t out_%s_max",
|
"char *out_%s,\nsize_t out_%s_max,\nsize_t "
|
||||||
|
"*out_%s_len",
|
||||||
|
param->p_name,
|
||||||
param->p_name,
|
param->p_name,
|
||||||
param->p_name);
|
param->p_name);
|
||||||
break;
|
break;
|
||||||
case TYPE_BUFFER:
|
case TYPE_BUFFER:
|
||||||
emit(ctx,
|
emit(ctx,
|
||||||
"void *out_%s,\nsize_t out_%s_max",
|
"void *out_%s,\nsize_t out_%s_max,\nsize_t "
|
||||||
|
"*out_%s_len",
|
||||||
|
param->p_name,
|
||||||
param->p_name,
|
param->p_name,
|
||||||
param->p_name);
|
param->p_name);
|
||||||
break;
|
break;
|
||||||
@@ -679,7 +688,7 @@ static int emit_interface_dispatcher_impl_msg(
|
|||||||
msg->msg_name);
|
msg->msg_name);
|
||||||
emit(ctx,
|
emit(ctx,
|
||||||
"status = xpc_msg_read(msg, 0, &" MSG_STRUCT_NAME
|
"status = xpc_msg_read(msg, 0, &" MSG_STRUCT_NAME
|
||||||
", sizeof " MSG_STRUCT_NAME ");\n");
|
", sizeof " MSG_STRUCT_NAME ", NULL);\n");
|
||||||
|
|
||||||
fx_queue_entry *entry = fx_queue_first(&msg->msg_params);
|
fx_queue_entry *entry = fx_queue_first(&msg->msg_params);
|
||||||
while (entry) {
|
while (entry) {
|
||||||
@@ -836,6 +845,13 @@ static int emit_interface_dispatcher_impl_msg(
|
|||||||
handle_index);
|
handle_index);
|
||||||
handle_index++;
|
handle_index++;
|
||||||
break;
|
break;
|
||||||
|
case TYPE_BUFFER:
|
||||||
|
emit(ctx,
|
||||||
|
MSG_STRUCT_NAME
|
||||||
|
".msg_response.%s_len = xpc_buffer_length(&%s);\n",
|
||||||
|
param->p_name,
|
||||||
|
param->p_name);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user