diff options
-rw-r--r-- | build-aux/measurestack/analyze.py | 56 | ||||
-rw-r--r-- | cmd/sbc_harness/main.c | 2 | ||||
-rw-r--r-- | cmd/sbc_harness/usb_keyboard.c | 2 | ||||
-rw-r--r-- | lib9p/core.c | 6 | ||||
-rw-r--r-- | lib9p/srv.c | 5 | ||||
-rw-r--r-- | libcr/coroutine.c | 6 | ||||
-rw-r--r-- | libcr_ipc/tests/test_chan.c | 2 | ||||
-rw-r--r-- | libcr_ipc/tests/test_rpc.c | 2 | ||||
-rw-r--r-- | libcr_ipc/tests/test_rwmutex.c | 2 | ||||
-rw-r--r-- | libcr_ipc/tests/test_select.c | 6 | ||||
-rw-r--r-- | libdhcp/dhcp_client.c | 2 | ||||
-rw-r--r-- | libhw_cr/host_alarmclock.c | 4 | ||||
-rw-r--r-- | libhw_cr/host_net.c | 22 | ||||
-rw-r--r-- | libhw_cr/rp2040_dma.c | 4 | ||||
-rw-r--r-- | libhw_cr/rp2040_gpioirq.c | 2 | ||||
-rw-r--r-- | libhw_cr/rp2040_hwspi.c | 12 | ||||
-rw-r--r-- | libhw_cr/w5500.c | 8 | ||||
-rw-r--r-- | libhw_generic/alarmclock.c | 2 | ||||
-rw-r--r-- | libhw_generic/include/libhw/generic/io.h | 6 | ||||
-rw-r--r-- | libmisc/include/libmisc/macro.h | 6 | ||||
-rw-r--r-- | libmisc/include/libmisc/obj.h | 2 | ||||
-rw-r--r-- | libmisc/tests/test_endian.c | 2 | ||||
-rw-r--r-- | libmisc/tests/test_obj_nest.c | 4 | ||||
-rw-r--r-- | libmisc/tests/test_rand.c | 2 | ||||
-rw-r--r-- | libusb/usb_common.c | 2 |
25 files changed, 107 insertions, 62 deletions
diff --git a/build-aux/measurestack/analyze.py b/build-aux/measurestack/analyze.py index 67c44ce..97f1769 100644 --- a/build-aux/measurestack/analyze.py +++ b/build-aux/measurestack/analyze.py @@ -276,7 +276,7 @@ class Application(typing.Protocol): # code ######################################################################### -re_node_label = re.compile( +re_node_normal_label = re.compile( r"(?P<funcname>[^\n]+)\n" + r"(?P<location>[^\n]+:[0-9]+:[0-9]+)\n" + r"(?P<nstatic>[0-9]+) bytes \((?P<usage_kind>static|dynamic|dynamic,bounded)\)\n" @@ -284,6 +284,10 @@ re_node_label = re.compile( + r"(?:\n.*)*", flags=re.MULTILINE, ) +re_node_alias_label = re.compile( + r"(?P<funcname>[^\n]+)\n" + r"(?P<location>[^\n]+:[0-9]+:[0-9]+)", + flags=re.MULTILINE, +) class _Graph: @@ -376,20 +380,44 @@ def _make_graph( case "title": node.funcname = QName(v) case "label": - if elem.attrs.get("shape", "") != "ellipse": - m = re_node_label.fullmatch(v) - if not m: - raise ValueError(f"unexpected label value {v!r}") - node.location = m.group("location") - node.usage_kind = typing.cast( - UsageKind, m.group("usage_kind") - ) - node.nstatic = int(m.group("nstatic")) - node.ndynamic = int(m.group("ndynamic")) + shape: str | None = elem.attrs.get("shape", None) + match shape: + case "ellipse": # external + pass + case "triangle": # alias (since GCC 15) + m = re_node_alias_label.fullmatch(v) + if not m: + raise ValueError( + f"unexpected label value {v!r}" + ) + node.location = m.group("location") + node.usage_kind = "static" + node.nstatic = 0 + node.ndynamic = 0 + case None: # normal + m = re_node_normal_label.fullmatch(v) + if not m: + raise ValueError( + f"unexpected label value {v!r}" + ) + node.location = m.group("location") + node.usage_kind = typing.cast( + UsageKind, m.group("usage_kind") + ) + node.nstatic = int(m.group("nstatic")) + node.ndynamic = int(m.group("ndynamic")) + case _: + raise ValueError( + f"unexpected shape value {shape!r}" + ) case "shape": - if v != "ellipse": - raise ValueError(f"unexpected shape value {v!r}") - skip = True + match v: + case "ellipse": # external + skip = True + case "triangle": # alias (since GCC 15) + pass + case _: + raise ValueError(f"unexpected shape value {v!r}") case _: raise ValueError(f"unknown edge key {k!r}") if not skip: diff --git a/cmd/sbc_harness/main.c b/cmd/sbc_harness/main.c index b6f485f..de9751b 100644 --- a/cmd/sbc_harness/main.c +++ b/cmd/sbc_harness/main.c @@ -224,7 +224,7 @@ COROUTINE init_cr(void *) { usb_keyboard_init(); usb_common_lateinit(); - globals.keyboard_chan = (usb_keyboard_rpc_t){0}; + globals.keyboard_chan = (usb_keyboard_rpc_t){}; globals.srv.rootdir = get_root; diff --git a/cmd/sbc_harness/usb_keyboard.c b/cmd/sbc_harness/usb_keyboard.c index 7dd8a24..0573dba 100644 --- a/cmd/sbc_harness/usb_keyboard.c +++ b/cmd/sbc_harness/usb_keyboard.c @@ -49,7 +49,7 @@ COROUTINE usb_keyboard_cr(void *_chan) { uint8_t report_id = 0; uint8_t modifier = 0; - uint8_t keycodes[6] = {0}; + uint8_t keycodes[6] = {}; for (;;) { while (!tud_hid_n_ready(kbd_ifc)) cr_yield(); diff --git a/lib9p/core.c b/lib9p/core.c index 03cdea5..c777741 100644 --- a/lib9p/core.c +++ b/lib9p/core.c @@ -20,7 +20,7 @@ struct lib9p_s lib9p_str(char *s) { if (!s) - return (struct lib9p_s){0}; + return (struct lib9p_s){}; return (struct lib9p_s){ .len = strlen(s), .utf8 = s, @@ -28,7 +28,7 @@ struct lib9p_s lib9p_str(char *s) { } struct lib9p_s lib9p_strn(char *s, size_t maxlen) { if (maxlen == 0 || !s) - return (struct lib9p_s){0}; + return (struct lib9p_s){}; return (struct lib9p_s){ .len = strnlen(s, maxlen), .utf8 = s, @@ -272,7 +272,7 @@ uint32_t lib9p_stat_marshal(struct lib9p_ctx *ctx, uint32_t max_net_size, struct struct lib9p_ctx _ctx = *ctx; _ctx.max_msg_size = max_net_size; - struct iovec iov = {0}; + struct iovec iov = {}; struct _marshal_ret ret = { .net_iov_cnt = 1, .net_iov = &iov, diff --git a/lib9p/srv.c b/lib9p/srv.c index 12124af..1a6bbb1 100644 --- a/lib9p/srv.c +++ b/lib9p/srv.c @@ -632,9 +632,7 @@ void lib9p_srv_worker(struct srv_req *ctx) { /* Handle it. ********************************************************/ tmessage_handler handler; -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wswitch-enum" - switch (typ) { + LM_PARTIAL_SWITCH (typ) { case LIB9P_TYP_Tversion: handler = (tmessage_handler)handle_Tversion; break; #if _LIB9P_ENABLE_stat case LIB9P_TYP_Tauth: handler = (tmessage_handler)handle_Tauth; break; @@ -661,7 +659,6 @@ void lib9p_srv_worker(struct srv_req *ctx) { default: assert_notreached("lib9p_Tmsg_validate() should have rejected unknown typ"); } -#pragma GCC diagnostic pop handler(ctx, (void *)host_req); assert(ctx->responded); diff --git a/libcr/coroutine.c b/libcr/coroutine.c index cf63122..4c0b7e8 100644 --- a/libcr/coroutine.c +++ b/libcr/coroutine.c @@ -457,7 +457,7 @@ static cr_plat_jmp_buf coroutine_gdb_env; * coroutine_ringbuf queue. */ -static struct coroutine coroutine_table[CONFIG_COROUTINE_NUM] = {0}; +static struct coroutine coroutine_table[CONFIG_COROUTINE_NUM] = {}; static struct { /* tail == head means empty */ /* buf[tail] is the next thing to run */ @@ -468,7 +468,7 @@ static struct { * we don't have to worry about funny wrap-around behavior * when head or tail overflow. */ cid_t buf[LM_NEXT_POWER_OF_2(CONFIG_COROUTINE_NUM)]; -} coroutine_ringbuf = {0}; +} coroutine_ringbuf = {}; static cid_t coroutine_running = 0; static size_t coroutine_cnt = 0; @@ -665,7 +665,7 @@ void coroutine_main(void) { VALGRIND_STACK_DEREGISTER(coroutine_table[coroutine_running-1].stack_id); #endif free(coroutine_table[coroutine_running-1].stack); - coroutine_table[coroutine_running-1] = (struct coroutine){0}; + coroutine_table[coroutine_running-1] = (struct coroutine){}; coroutine_cnt--; } coroutine_running = 0; diff --git a/libcr_ipc/tests/test_chan.c b/libcr_ipc/tests/test_chan.c index 4788dd4..a6eba82 100644 --- a/libcr_ipc/tests/test_chan.c +++ b/libcr_ipc/tests/test_chan.c @@ -41,7 +41,7 @@ COROUTINE consumer_cr(void *_ch) { } int main() { - intchan_t ch = {0}; + intchan_t ch = {}; coroutine_add("producer", producer_cr, &ch); coroutine_add("consumer", consumer_cr, &ch); coroutine_main(); diff --git a/libcr_ipc/tests/test_rpc.c b/libcr_ipc/tests/test_rpc.c index 1461450..ee88f47 100644 --- a/libcr_ipc/tests/test_rpc.c +++ b/libcr_ipc/tests/test_rpc.c @@ -50,7 +50,7 @@ COROUTINE worker2_cr(void *_ch) { } int main() { - intrpc_t ch = {0}; + intrpc_t ch = {}; coroutine_add("worker1", worker1_cr, &ch); coroutine_add("caller", caller_cr, &ch); coroutine_add("worker2", worker2_cr, &ch); diff --git a/libcr_ipc/tests/test_rwmutex.c b/libcr_ipc/tests/test_rwmutex.c index 77e8c7c..e79e779 100644 --- a/libcr_ipc/tests/test_rwmutex.c +++ b/libcr_ipc/tests/test_rwmutex.c @@ -12,7 +12,7 @@ #include "test.h" cr_rwmutex_t mu = {}; -char out[10] = {0}; +char out[10] = {}; size_t len = 0; COROUTINE cr1_reader(void *_mu) { diff --git a/libcr_ipc/tests/test_select.c b/libcr_ipc/tests/test_select.c index 9b5d117..3107155 100644 --- a/libcr_ipc/tests/test_select.c +++ b/libcr_ipc/tests/test_select.c @@ -11,15 +11,15 @@ CR_CHAN_DECLARE(intchan, int); -intchan_t ch[10] = {0}; -intchan_t fch = {0}; +intchan_t ch[10] = {}; +intchan_t fch = {}; COROUTINE consumer_cr(void *) { cr_begin(); struct cr_select_arg args[11]; - bool chdone[10] = {0}; + bool chdone[10] = {}; int arg2ch[10]; for (;;) { int ret_ch; diff --git a/libdhcp/dhcp_client.c b/libdhcp/dhcp_client.c index 2d0ebe6..a561cbf 100644 --- a/libdhcp/dhcp_client.c +++ b/libdhcp/dhcp_client.c @@ -297,7 +297,7 @@ static bool dhcp_client_send(struct dhcp_client *client, uint8_t msgtyp, const c * Build the message * \**********************************************************************/ - *scratch_msg = (struct dhcp_msg){0}; + *scratch_msg = (struct dhcp_msg){}; size_t optlen = 0; /* Base structure. diff --git a/libhw_cr/host_alarmclock.c b/libhw_cr/host_alarmclock.c index 9eedec2..ac2093c 100644 --- a/libhw_cr/host_alarmclock.c +++ b/libhw_cr/host_alarmclock.c @@ -49,7 +49,7 @@ static void hostclock_handle_sig_alarm(int LM_UNUSED(sig), siginfo_t *info, void if (alarmclock->queue) { struct itimerspec alarmspec = { .it_value = ns_to_host_ns_time(alarmclock->queue->fire_at_ns), - .it_interval = {0}, + .it_interval = {}, }; if (timer_settime(alarmclock->timer_id, TIMER_ABSTIME, &alarmspec, NULL) != 0) error(1, errno, "timer_settime"); @@ -101,7 +101,7 @@ static bool hostclock_add_trigger(struct hostclock *alarmclock, if (alarmclock->queue == trigger) { struct itimerspec alarmspec = { .it_value = ns_to_host_ns_time(trigger->fire_at_ns), - .it_interval = {0}, + .it_interval = {}, }; if (timer_settime(alarmclock->timer_id, TIMER_ABSTIME, &alarmspec, NULL) != 0) error(1, errno, "timer_settime"); diff --git a/libhw_cr/host_net.c b/libhw_cr/host_net.c index 01f4370..4a2e65f 100644 --- a/libhw_cr/host_net.c +++ b/libhw_cr/host_net.c @@ -53,7 +53,7 @@ static void hostnet_handle_sig_io(int LM_UNUSED(sig), siginfo_t *info, void *LM_ } static void hostnet_init(void) { - struct sigaction action = {0}; + struct sigaction action = {}; if (hostnet_sig_io) return; @@ -128,7 +128,7 @@ void hostnet_tcp_listener_init(struct hostnet_tcp_listener *self, uint16_t port) union { struct sockaddr_in in; struct sockaddr gen; - } addr = { 0 }; + } addr = {}; hostnet_init(); @@ -241,6 +241,10 @@ static ssize_t hostnet_tcp_readv(struct _hostnet_tcp_conn *conn, const struct io assert(conn); assert(iov); assert(iovcnt > 0); + size_t count = 0; + for (int i = 0; i < iovcnt; i++) + count += iov[i].iov_len; + assert(count); ssize_t ret; struct hostnet_pthread_readv_args args = { @@ -259,7 +263,7 @@ static ssize_t hostnet_tcp_readv(struct _hostnet_tcp_conn *conn, const struct io return -NET_ERECV_TIMEOUT; args.timeout = ns_to_host_us_time(conn->read_deadline_ns-now_ns); } else { - args.timeout = (host_us_time_t){0}; + args.timeout = (host_us_time_t){}; } if (RUN_PTHREAD(hostnet_pthread_readv, &args)) @@ -319,6 +323,10 @@ static ssize_t hostnet_tcp_writev(struct _hostnet_tcp_conn *conn, const struct i assert(conn); assert(iov); assert(iovcnt > 0); + size_t count = 0; + for (int i = 0; i < iovcnt; i++) + count += iov[i].iov_len; + assert(count); ssize_t ret; struct hostnet_pthread_writev_args args = { @@ -359,7 +367,7 @@ void hostnet_udp_conn_init(struct hostnet_udp_conn *self, uint16_t port) { struct sockaddr_in in; struct sockaddr gen; struct sockaddr_storage stor; - } addr = { 0 }; + } addr = {}; hostnet_init(); @@ -396,7 +404,7 @@ static void *hostnet_pthread_sendto(void *_args) { struct sockaddr_in in; struct sockaddr gen; struct sockaddr_storage stor; - } addr = { 0 }; + } addr = {}; addr.in.sin_family = AF_INET; addr.in.sin_addr.s_addr = @@ -464,7 +472,7 @@ static void *hostnet_pthread_recvfrom(void *_args) { struct sockaddr_in in; struct sockaddr gen; struct sockaddr_storage stor; - } addr = { 0 }; + } addr = {}; socklen_t addr_size; *(args->ret_size) = setsockopt(args->connfd, SOL_SOCKET, SO_RCVTIMEO, @@ -518,7 +526,7 @@ static ssize_t hostnet_udp_recvfrom(struct hostnet_udp_conn *conn, void *buf, si return -NET_ERECV_TIMEOUT; args.timeout = ns_to_host_us_time(conn->read_deadline_ns-now_ns); } else { - args.timeout = (host_us_time_t){0}; + args.timeout = (host_us_time_t){}; } if (RUN_PTHREAD(hostnet_pthread_recvfrom, &args)) diff --git a/libhw_cr/rp2040_dma.c b/libhw_cr/rp2040_dma.c index 47d5cd3..e117c19 100644 --- a/libhw_cr/rp2040_dma.c +++ b/libhw_cr/rp2040_dma.c @@ -12,9 +12,9 @@ struct dmairq_handler_entry { dmairq_handler_t fn; void *arg; }; -struct dmairq_handler_entry dmairq_handlers[NUM_DMA_CHANNELS] = {0}; +struct dmairq_handler_entry dmairq_handlers[NUM_DMA_CHANNELS] = {}; -bool dmairq_initialized[NUM_DMA_IRQS] = {0}; +bool dmairq_initialized[NUM_DMA_IRQS] = {}; static void dmairq_handler(void) { enum dmairq irq = __get_current_exception() - VTABLE_FIRST_IRQ; diff --git a/libhw_cr/rp2040_gpioirq.c b/libhw_cr/rp2040_gpioirq.c index 1ae74f9..5b3d616 100644 --- a/libhw_cr/rp2040_gpioirq.c +++ b/libhw_cr/rp2040_gpioirq.c @@ -15,7 +15,7 @@ struct gpioirq_handler_entry { gpioirq_handler_t fn; void *arg; }; -struct gpioirq_handler_entry gpioirq_handlers[NUM_BANK0_GPIOS][4] = {0}; +struct gpioirq_handler_entry gpioirq_handlers[NUM_BANK0_GPIOS][4] = {}; int gpioirq_core = -1; diff --git a/libhw_cr/rp2040_hwspi.c b/libhw_cr/rp2040_hwspi.c index c0b4fa4..3bf3f84 100644 --- a/libhw_cr/rp2040_hwspi.c +++ b/libhw_cr/rp2040_hwspi.c @@ -158,12 +158,14 @@ static void rp2040_hwspi_readwritev(struct rp2040_hwspi *self, const struct dupl uint8_t bogus_rx_dst; + size_t count = 0; int pruned_iovcnt = 0; - for (int i = 0; i < iovcnt; i++) + for (int i = 0; i < iovcnt; i++) { + count += iov[i].iov_len; if (iov[i].iov_len) pruned_iovcnt++; - if (!pruned_iovcnt) - return; + } + assert(count); /* It doesn't *really* matter which aliases we choose: * @@ -230,8 +232,8 @@ static void rp2040_hwspi_readwritev(struct rp2040_hwspi *self, const struct dupl }; j++; } - tx_data_blocks[pruned_iovcnt] = (typeof(tx_data_blocks[0])){0}; - rx_data_blocks[pruned_iovcnt] = (typeof(rx_data_blocks[0])){0}; + tx_data_blocks[pruned_iovcnt] = (typeof(tx_data_blocks[0])){}; + rx_data_blocks[pruned_iovcnt] = (typeof(rx_data_blocks[0])){}; /* If ctrl isn't the trigger then we need to make sure that * DMA_CTRL_IRQ_QUIET isn't cleared before the trigger * happens. */ diff --git a/libhw_cr/w5500.c b/libhw_cr/w5500.c index e676364..2893e8f 100644 --- a/libhw_cr/w5500.c +++ b/libhw_cr/w5500.c @@ -436,7 +436,7 @@ static void w5500_if_ifup(struct w5500 *chip, struct net_iface_config cfg) { static void w5500_if_ifdown(struct w5500 *chip) { log_debugf("if_down()"); - _w5500_if_up(chip, (struct net_iface_config){0}); + _w5500_if_up(chip, (struct net_iface_config){}); } static lo_interface net_stream_listener w5500_if_tcp_listen(struct w5500 *chip, uint16_t local_port) { @@ -608,10 +608,9 @@ static ssize_t w5500_tcp_writev(struct _w5500_socket *socket, const struct iovec size_t count = 0; for (int i = 0; i < iovcnt; i++) count += iov[i].iov_len; + assert(count); log_debugf("tcp_conn.write(%zu)", count); ASSERT_SELF(stream_conn, TCP); - if (count == 0) - return 0; /* What we really want is to pause until we receive an ACK for * some data we just queued, so that we can line up some new @@ -701,10 +700,9 @@ static ssize_t w5500_tcp_readv(struct _w5500_socket *socket, const struct iovec size_t count = 0; for (int i = 0; i < iovcnt; i++) count += iov[i].iov_len; + assert(count); log_debugf("tcp_conn.read(%zu)", count); ASSERT_SELF(stream_conn, TCP); - if (count == 0) - return 0; struct alarmclock_trigger trigger = {}; if (socket->read_deadline_ns) diff --git a/libhw_generic/alarmclock.c b/libhw_generic/alarmclock.c index 31fbbaf..e3aaea3 100644 --- a/libhw_generic/alarmclock.c +++ b/libhw_generic/alarmclock.c @@ -6,4 +6,4 @@ #include <libhw/generic/alarmclock.h> -lo_interface alarmclock bootclock = {0}; +lo_interface alarmclock bootclock = {}; diff --git a/libhw_generic/include/libhw/generic/io.h b/libhw_generic/include/libhw/generic/io.h index 6adce8c..96680bb 100644 --- a/libhw_generic/include/libhw/generic/io.h +++ b/libhw_generic/include/libhw/generic/io.h @@ -58,6 +58,8 @@ void io_slice_wr_to_duplex(struct duplex_iovec *dst, const struct iovec *src, in /** * Return bytes-read on success, 0 on EOF, -errno on error; a short * read is *not* an error. + * + * It is invalid to call readv when the sum length of iovecs is 0. */ #define io_reader_LO_IFACE \ LO_FUNC(ssize_t, readv, const struct iovec *iov, int iovcnt) @@ -71,6 +73,8 @@ LO_INTERFACE(io_reader); * * Writes are *not* guaranteed to be atomic, so if you have concurrent * writers then you should arrange for a mutex to protect the writer. + * + * It is invalid to call writev when the sum length of iovecs is 0. */ #define io_writer_LO_IFACE \ LO_FUNC(ssize_t, writev, const struct iovec *iov, int iovcnt) @@ -100,6 +104,8 @@ LO_INTERFACE(io_bidi_closer); /** * Return bytes-read and bytes-written on success, -errno on error; a * short read/write *is* an error. + * + * It is invalid to call readwritev when the sum length of iovecs is 0. */ #define io_duplex_readwriter_LO_IFACE \ LO_FUNC(void, readwritev, const struct duplex_iovec *iov, int iovcnt) diff --git a/libmisc/include/libmisc/macro.h b/libmisc/include/libmisc/macro.h index ae204ae..9ac29b9 100644 --- a/libmisc/include/libmisc/macro.h +++ b/libmisc/include/libmisc/macro.h @@ -11,6 +11,12 @@ #define LM_FORCE_SEMICOLON static_assert(1, "force semicolon") +#define LM_PARTIAL_SWITCH(VAL) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wswitch-enum\"") \ + switch (VAL) \ + _Pragma("GCC diagnostic pop") \ + /* for function definitions */ #define LM_UNUSED(argname) diff --git a/libmisc/include/libmisc/obj.h b/libmisc/include/libmisc/obj.h index 76dde91..d30a6f2 100644 --- a/libmisc/include/libmisc/obj.h +++ b/libmisc/include/libmisc/obj.h @@ -83,7 +83,7 @@ /** * `LO_NULL(iface_name)` is the null/nil/zero value for `lo_interface {iface_name}`. */ -#define LO_NULL(_ARG_iface_name) ((lo_interface _ARG_iface_name){0}) +#define LO_NULL(_ARG_iface_name) ((lo_interface _ARG_iface_name){}) /** * `LO_IS_NULL(iface_val)` returns whether `iface_val` is LO_NULL. diff --git a/libmisc/tests/test_endian.c b/libmisc/tests/test_endian.c index dcb3cc2..8c48727 100644 --- a/libmisc/tests/test_endian.c +++ b/libmisc/tests/test_endian.c @@ -11,7 +11,7 @@ #include "test.h" int main() { - uint8_t act[(2+4+8)*2] = {0}; + uint8_t act[(2+4+8)*2] = {}; size_t pos = 0; pos += uint16be_encode(&act[pos], UINT16_C(0x1234)); pos += uint32be_encode(&act[pos], UINT32_C(0x56789ABC)); diff --git a/libmisc/tests/test_obj_nest.c b/libmisc/tests/test_obj_nest.c index bb9d6de..d5e563e 100644 --- a/libmisc/tests/test_obj_nest.c +++ b/libmisc/tests/test_obj_nest.c @@ -63,10 +63,10 @@ static ssize_t myclass_write(struct myclass *self, void *buf, size_t count) { /* main test body *************************************************************/ int main() { - struct myclass _obj = {0}; + struct myclass _obj = {}; lo_interface read_writer obj = lo_box_myclass_as_read_writer(&_obj); test_assert(LO_CALL(obj, write, "Hello", 6) == 6); - char buf[6] = {0}; + char buf[6] = {}; test_assert(LO_CALL(obj, read, buf, 3) == 3); test_assert(memcmp(buf, "Hel\0\0\0", 6) == 0); return 0; diff --git a/libmisc/tests/test_rand.c b/libmisc/tests/test_rand.c index 3596d94..ecb1c49 100644 --- a/libmisc/tests/test_rand.c +++ b/libmisc/tests/test_rand.c @@ -50,7 +50,7 @@ static void test_n(uint64_t cnt) { #endif } else { double sum = 0; - bool seen[MAX_SEE_ALL] = {0}; + bool seen[MAX_SEE_ALL] = {}; for (int i = 0; i < ROUNDS; i++) { uint64_t val = rand_uint63n(cnt); sum += val; diff --git a/libusb/usb_common.c b/libusb/usb_common.c index efd12bc..88e01b4 100644 --- a/libusb/usb_common.c +++ b/libusb/usb_common.c @@ -30,7 +30,7 @@ static struct { uint8_t **configv; uint16_t *serial; uint8_t serial_bytelen; -} globals = {0}; +} globals = {}; /* Strings ********************************************************************/ |