The open source OpenXR runtime
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

st/oxr: Validate view array types

+21
+4
src/xrt/state_trackers/oxr/oxr_api_session.c
··· 204 204 OXR_VERIFY_ARG_NOT_NULL(&log, views); 205 205 } 206 206 207 + for (uint32_t i = 0; i < viewCapacityInput; i++) { 208 + OXR_VERIFY_ARG_ARRAY_ELEMENT_TYPE(&log, views, i, XR_TYPE_VIEW); 209 + } 210 + 207 211 if (viewLocateInfo->displayTime <= (XrTime)0) { 208 212 return oxr_error(&log, XR_ERROR_TIME_INVALID, "(time == %" PRIi64 ") is not a valid time.", 209 213 viewLocateInfo->displayTime);
+4
src/xrt/state_trackers/oxr/oxr_api_system.c
··· 156 156 OXR_VERIFY_INSTANCE_AND_INIT_LOG(&log, instance, inst, "xrEnumerateViewConfigurationViews"); 157 157 OXR_VERIFY_SYSTEM_AND_GET(&log, inst, systemId, sys); 158 158 159 + for (uint32_t i = 0; i < viewCapacityInput; i++) { 160 + OXR_VERIFY_ARG_ARRAY_ELEMENT_TYPE(&log, views, i, XR_TYPE_VIEW_CONFIGURATION_VIEW); 161 + } 162 + 159 163 return oxr_system_enumerate_view_conf_views(&log, sys, viewConfigurationType, viewCapacityInput, 160 164 viewCountOutput, views); 161 165 }
+13
src/xrt/state_trackers/oxr/oxr_api_verify.h
··· 140 140 OXR_VERIFY_ARG_TYPE_CAN_BE_NULL(log, arg, type_enum); \ 141 141 } while (false) 142 142 143 + /*! 144 + * Must only be used with full typed arrays, aka non-basetyped arrays like that 145 + * passed into xrEnumerateSwapchainImages. 146 + */ 147 + #define OXR_VERIFY_ARG_ARRAY_ELEMENT_TYPE(log, array, index, type_enum) \ 148 + do { \ 149 + if ((array)[index].type != type_enum) { \ 150 + return oxr_error(log, XR_ERROR_VALIDATION_FAILURE, \ 151 + "(" #array "[%u]->type == 0x%08x) expected 0x%08x", index, \ 152 + (array)[index].type, type_enum); \ 153 + } \ 154 + } while (false) 155 + 143 156 #define OXR_VERIFY_SUBACTION_PATHS(log, count, paths) \ 144 157 do { \ 145 158 if (count > 0 && paths == NULL) { \