|
87 | 87 | if (_os_log_encode(buf, fmt, args, saved_errno, &ob)) { |
88 | 88 | if (os_log_pack_send) { |
89 | 89 | size_t sz = _os_log_pack_size(ob.ob_len); |
90 | | - union { |
91 | | - os_log_pack_s pack; |
92 | | - uint8_t buf[OS_LOG_FMT_BUF_SIZE + sizeof(os_log_pack_s)]; |
93 | | - } u; |
| 90 | + uint8_t _Alignas(os_log_pack_s) buf[sz]; |
| 91 | + os_log_pack_t p = (os_log_pack_t)buf; |
94 | 92 | /* |
95 | 93 | * _os_log_encode has already packed `saved_errno` into a |
96 | 94 | * OSLF_CMD_TYPE_SCALAR command as the OSLF_CMD_TYPE_ERRNO does not |
97 | 95 | * deploy backwards, so pass zero for errno here. |
98 | 96 | */ |
99 | | - uint8_t *ptr = _os_log_pack_fill(&u.pack, sz, 0, dso, fmt); |
100 | | - u.pack.olp_pc = ra; |
| 97 | + uint8_t *ptr = _os_log_pack_fill(p, sz, 0, dso, fmt); |
| 98 | + p->olp_pc = ra; |
101 | 99 | memcpy(ptr, buf, ob.ob_len); |
102 | | - os_log_pack_send(&u.pack, h, type); |
| 100 | + os_log_pack_send(p, h, type); |
103 | 101 | } else { |
104 | 102 | _os_log_impl((void *)dso, h, type, fmt, (uint8_t *)buf, ob.ob_len); |
105 | 103 | } |
|
138 | 136 | _os_log_encode(buf, fmt, args, saved_errno, &ob); |
139 | 137 | if (encoded) { |
140 | 138 | size_t sz = _os_log_pack_size(ob.ob_len); |
141 | | - union { |
142 | | - os_log_pack_s pack; |
143 | | - uint8_t buf[OS_LOG_FMT_BUF_SIZE + sizeof(os_log_pack_s)]; |
144 | | - } u; |
145 | | - uint8_t *ptr = _os_signpost_pack_fill(&u.pack, sz, saved_errno, dso, |
| 139 | + uint8_t _Alignas(os_log_pack_s) buf[sz]; |
| 140 | + os_log_pack_t p = (os_log_pack_t)buf; |
| 141 | + uint8_t *ptr = _os_signpost_pack_fill(p, sz, saved_errno, dso, |
146 | 142 | fmt, spnm, spid); |
147 | | - u.pack.olp_pc = ra; |
| 143 | + p->olp_pc = ra; |
148 | 144 | memcpy(ptr, buf, ob.ob_len); |
149 | | - _os_signpost_pack_send(&u.pack, h, spty); |
| 145 | + _os_signpost_pack_send(p, h, spty); |
150 | 146 | } |
151 | 147 | } |
152 | 148 |
|
|
0 commit comments