Skip to content

Commit 093d483

Browse files
authored
Merge pull request #22464 from moiseev/os-log-buffer-fix
[overlay] Size the os_log pack buffer appropriately
2 parents 0f493a6 + caac1bf commit 093d483

File tree

1 file changed

+10
-14
lines changed
  • stdlib/public/Darwin/os

1 file changed

+10
-14
lines changed

stdlib/public/Darwin/os/os.m

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -87,19 +87,17 @@
8787
if (_os_log_encode(buf, fmt, args, saved_errno, &ob)) {
8888
if (os_log_pack_send) {
8989
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;
9492
/*
9593
* _os_log_encode has already packed `saved_errno` into a
9694
* OSLF_CMD_TYPE_SCALAR command as the OSLF_CMD_TYPE_ERRNO does not
9795
* deploy backwards, so pass zero for errno here.
9896
*/
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;
10199
memcpy(ptr, buf, ob.ob_len);
102-
os_log_pack_send(&u.pack, h, type);
100+
os_log_pack_send(p, h, type);
103101
} else {
104102
_os_log_impl((void *)dso, h, type, fmt, (uint8_t *)buf, ob.ob_len);
105103
}
@@ -138,15 +136,13 @@
138136
_os_log_encode(buf, fmt, args, saved_errno, &ob);
139137
if (encoded) {
140138
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,
146142
fmt, spnm, spid);
147-
u.pack.olp_pc = ra;
143+
p->olp_pc = ra;
148144
memcpy(ptr, buf, ob.ob_len);
149-
_os_signpost_pack_send(&u.pack, h, spty);
145+
_os_signpost_pack_send(p, h, spty);
150146
}
151147
}
152148

0 commit comments

Comments
 (0)