Should be wrapped in a `do { ... } while (0)` block but otherwise LGTM.