On 17 July 2017 at 18:29, Eric Blake <ebl...@redhat.com> wrote: > On 07/17/2017 11:46 AM, Dr. David Alan Gilbert wrote: > >>> +++ w/hw/usb/bus.c >>> @@ -407,8 +407,9 @@ void usb_register_companion(const char *masterbus, >>> USBPort *ports[], >>> void usb_port_location(USBPort *downstream, USBPort *upstream, int portnr) >>> { >>> if (upstream) { >>> - snprintf(downstream->path, sizeof(downstream->path), "%s.%d", >>> - upstream->path, portnr); >>> + int l = snprintf(downstream->path, sizeof(downstream->path), >>> "%s.%d", >>> + upstream->path, portnr); >>> + assert(l < sizeof(downstream->path)); >> >> You may find this doesn't help in some windows builds; the assert >> functions aren't always marked as noreturn (because they pop up a dialog >> that asks you whether you want to run into a debugger etc). > > How would it not help? Are we using gcc 7 on windows builds?
At some point in the future we are likely to, because my w32/w64 test setups use the Ubuntu gcc-mingw-w64-x86-64 packages, and so as I upgrade my desktop they will move forward to newer gcc versions. (More generally our users may do so before me ;-)) We should be consistent -- if we can't trust assert() to be marked nonreturn, as it seems we can't, then we shouldn't write new code that assumes it always is, even if today it doesn't happen to bite us on the compiler/host combinations we're testing right now. thanks -- PMM