|
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