[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] slirp: Gcc 9 -O3 fix
From: |
Samuel Thibault |
Subject: |
Re: [Qemu-devel] [PATCH] slirp: Gcc 9 -O3 fix |
Date: |
Fri, 12 Apr 2019 23:16:33 +0200 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
Dr. David Alan Gilbert, le ven. 12 avril 2019 16:49:42 +0100, a ecrit:
> * Samuel Thibault (address@hidden) wrote:
> > Hello,
> >
> > Dr. David Alan Gilbert, le lun. 08 avril 2019 09:46:53 +0100, a ecrit:
> > > 'soread' has the comment:
> > >
> > > /*
> > > * No need to check if there's enough room to read.
> > > * soread wouldn't have been called if there weren't
> > > */
> > > sopreprbuf(so, iov, &n);
> > >
> > > the compiler doesn't realise that, and is moaning about the case
> > > where the if (len <=0) return happens and the following
> > > code tries to use iov.
> >
> > I see. Perhaps we should make this an assert then? In case this isn't
> > true, i.e. soread() is called even if no room is available, returning 0
> > would probably just let the caller just try again, and we should rather
> > just plainly crash than hang?
>
> Adding the assert in soread sorts that case out:
> assert(sopreprbuf(so, iov, &n) != 0);
>
> however, I also need to fix soreadbuf; is it legal to call that with
> a 0 size?
It does not really make sense to, so an assert >0 should be fine.
Samuel