return rv;
}
-/* Helper to free typed parameters. */
-static void
-remoteFreeTypedParameters(remote_typed_param *args_params_val,
- u_int args_params_len)
-{
- size_t i;
-
- if (args_params_val == NULL)
- return;
-
- for (i = 0; i < args_params_len; i++) {
- VIR_FREE(args_params_val[i].field);
- if (args_params_val[i].value.type == VIR_TYPED_PARAM_STRING)
- VIR_FREE(args_params_val[i].value.remote_typed_param_value_u.s);
- }
-
- VIR_FREE(args_params_val);
-}
-
/* Helper to serialize typed parameters. */
static int
remoteSerializeTypedParameters(virTypedParameterPtr params,
rv = 0;
cleanup:
- remoteFreeTypedParameters(val, nparams);
+ virTypedParamsRemoteFree((virTypedParameterRemotePtr) val, nparams);
return rv;
}
rv = ret.xml; /* caller frees */
cleanup:
- remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+ virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+ args.params.params_len);
remoteDriverUnlock(priv);
return rv;
rv = 0;
cleanup:
- remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+ virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+ args.params.params_len);
VIR_FREE(ret.uri_out);
remoteDriverUnlock(priv);
return rv;
rv = 0;
cleanup:
- remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+ virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+ args.params.params_len);
remoteDriverUnlock(priv);
return rv;
rv = 0;
cleanup:
- remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+ virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+ args.params.params_len);
remoteDriverUnlock(priv);
return rv;
(char *) &ret);
cleanup:
- remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+ virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+ args.params.params_len);
remoteDriverUnlock(priv);
return rv;
rv = 0;
cleanup:
- remoteFreeTypedParameters(args.params.params_val, args.params.params_len);
+ virTypedParamsRemoteFree((virTypedParameterRemotePtr) args.params.params_val,
+ args.params.params_len);
remoteDriverUnlock(priv);
return rv;
}
VIR_FREE(params);
}
+/**
+ * virTypedParamsRemoteFree:
+ * @remote_params_val: array of typed parameters as specified by
+ * (remote|admin)_protocol.h
+ * @remote_params_len: number of parameters in @remote_params_val
+ *
+ * Frees memory used by string representations of parameter identificators,
+ * memory used by string values of parameters and the memory occupied by
+ * @remote_params_val itself.
+ *
+ * Returns nothing.
+ */
+void
+virTypedParamsRemoteFree(virTypedParameterRemotePtr remote_params_val,
+ unsigned int remote_params_len)
+{
+ size_t i;
+
+ if (!remote_params_val)
+ return;
+
+ for (i = 0; i < remote_params_len; i++) {
+ VIR_FREE(remote_params_val[i].field);
+ if (remote_params_val[i].value.type == VIR_TYPED_PARAM_STRING)
+ VIR_FREE(remote_params_val[i].value.remote_typed_param_value.s);
+ }
+ VIR_FREE(remote_params_val);
+}
+
/**
* virTypedParamsDeserialize: