[Libguestfs] [libnbd PATCH v2 1/2] generator/C: print_wrapper: use helper variable for permitted state check
Laszlo Ersek
lersek at redhat.com
Tue May 2 17:04:25 UTC 2023
Use a local boolean flag for unnesting the *_in_permitted_state() function
call.
The one place where this change currently matters is [lib/api.c]:
> @@ -4787,29 +4925,31 @@ aio_connect_systemd_socket_activation_in
> return true;
> }
>
> int
> nbd_aio_connect_systemd_socket_activation (struct nbd_handle *h,
> char **argv)
> {
> + bool p;
> int ret;
>
> nbd_internal_set_error_context ("nbd_aio_connect_systemd_socket_activation");
>
> pthread_mutex_lock (&h->lock);
> if_debug (h) {
> char *argv_printable =
> nbd_internal_printable_string_list (argv);
> debug (h,
> "enter: argv=%s",
> argv_printable ? argv_printable : "");
> free (argv_printable);
> }
>
> - if (unlikely (!aio_connect_systemd_socket_activation_in_permitted_state (h))) {
> + p = aio_connect_systemd_socket_activation_in_permitted_state (h);
> + if (unlikely (!p)) {
> ret = -1;
> goto out;
> }
> if (argv == NULL) {
> set_error (EFAULT, "%s cannot be NULL", "argv");
> ret = -1;
> goto out;
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2172516
Signed-off-by: Laszlo Ersek <lersek at redhat.com>
---
Notes:
v2:
- declare "p" near the top of the function [Eric]
generator/C.ml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/generator/C.ml b/generator/C.ml
index cf44424517de..e68fd70382cf 100644
--- a/generator/C.ml
+++ b/generator/C.ml
@@ -569,6 +569,8 @@ let
print_arg_list ~wrap:true ~handle:true args optargs;
pr "\n";
pr "{\n";
+ if permitted_states <> [] then
+ pr " bool p;\n";
pr " %s ret;\n" ret_c_type;
pr "\n";
if may_set_error then (
@@ -599,7 +601,8 @@ let
let value = match errcode with
| Some value -> value
| None -> assert false in
- pr " if (unlikely (!%s_in_permitted_state (h))) {\n" name;
+ pr " p = %s_in_permitted_state (h);\n" name;
+ pr " if (unlikely (!p)) {\n";
pr " ret = %s;\n" value;
pr " goto out;\n";
pr " }\n";
More information about the Libguestfs
mailing list