From 5fa58efcbf58d274bd84b0365a5d313754356af6 Mon Sep 17 00:00:00 2001 From: Jakob Bornecrantz Date: Thu, 1 Aug 2019 07:39:50 +0100 Subject: [PATCH] st/oxr: Verify width and height on swapchain create --- src/xrt/state_trackers/oxr/oxr_api_swapchain.c | 7 +++---- src/xrt/state_trackers/oxr/oxr_api_verify.h | 8 ++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/xrt/state_trackers/oxr/oxr_api_swapchain.c b/src/xrt/state_trackers/oxr/oxr_api_swapchain.c index 5a6e5908f..63d435377 100644 --- a/src/xrt/state_trackers/oxr/oxr_api_swapchain.c +++ b/src/xrt/state_trackers/oxr/oxr_api_swapchain.c @@ -59,10 +59,9 @@ oxr_xrCreateSwapchain(XrSession session, OXR_VERIFY_ARG_NOT_NULL(&log, out_swapchain); // Save people from shooting themselves in the foot. - if (createInfo->arraySize <= 0) { - return oxr_error(&log, XR_ERROR_VALIDATION_FAILURE, - "(createInfo->arraySize) must be non-zero"); - } + OXR_VERIFY_ARG_NOT_ZERO(&log, createInfo->arraySize); + OXR_VERIFY_ARG_NOT_ZERO(&log, createInfo->width); + OXR_VERIFY_ARG_NOT_ZERO(&log, createInfo->height); ret = sess->create_swapchain(&log, sess, createInfo, &sc); if (ret != XR_SUCCESS) { diff --git a/src/xrt/state_trackers/oxr/oxr_api_verify.h b/src/xrt/state_trackers/oxr/oxr_api_verify.h index 69716cc0d..04c3afb47 100644 --- a/src/xrt/state_trackers/oxr/oxr_api_verify.h +++ b/src/xrt/state_trackers/oxr/oxr_api_verify.h @@ -91,6 +91,14 @@ extern "C" { } \ } while (false) +#define OXR_VERIFY_ARG_NOT_ZERO(log, arg) \ + do { \ + if (arg == 0) { \ + return oxr_error(log, XR_ERROR_VALIDATION_FAILURE, \ + "(" #arg " == 0) must be non-zero"); \ + } \ + } while (false) + #define OXR_VERIFY_ARG_TYPE_AND_NULL(log, arg, type_enum) \ do { \ if (arg == NULL) { \