From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Corey Minyard <corey@minyard.net>
Cc: Markus Armbruster <armbru@redhat.com>, qemu-devel@nongnu.org
Subject: Re: [PATCH 3/3] cleanup: Drop pointless label at end of function
Date: Thu, 20 Mar 2025 09:28:51 +0000 [thread overview]
Message-ID: <Z9vf05yjMWkwmMVp@redhat.com> (raw)
In-Reply-To: <Z9seHbw1IepwkppI@mail.minyard.net>
On Wed, Mar 19, 2025 at 02:42:21PM -0500, Corey Minyard wrote:
> On Wed, Mar 19, 2025 at 08:21:20PM +0100, Markus Armbruster wrote:
> > Corey Minyard <corey@minyard.net> writes:
> >
> > > Is this official coding style? I'm not a big fan of having return
> > > statements in the middle of functions, I generally only put them at
> > > the beginning or the end.
> >
> > There's nothing in docs/devel/style.rst.
> >
> > I count more than 42,000 return statements with indentation > 4. These
> > are either within some block, or incorrectly indented. I'd bet my own
> > money that it's the former for pretty much all of them.
> >
> > I count less than 130 labels right before a return statement at end of a
> > function.
> >
> > Based on that, I'd say return in the middle of function is
> > overwhelmingly common in our code.
> >
>
> Ok. It's not a huge deal to me. I think it's more dangerous to
> have returns in the middle; they are easy to miss and an "out:" at the
> end make it more clear there are returns in the middle. But that's
> just my opinion. To make wholesale changes like this I would prefer
> it be in the style guide. But, I don't want to start a holy war,
> either. Sigh.
In traditional C, I would agree with you that mid-function 'return's
are often a bad idea, because they complicate free'ing of memory and
tend to actively encourage memory/resource leaks.
With our adoption of g_auto/g_autofree, that problem has been
eliminated across a decently large subset of code. This swings
the balance so that having mid-function 'return's often (but not
always) results in shorter & easier to understand code, with few
leak possiblities, provided g_auto/autofree is sufficient to deal
with all cleanup needs.
There will still be cases where it makes more sense to use 'goto'
for cleanup, since g_auto/autofree is sufficient in all scenarios.
Thus I don't think we should have a rule that strictly dictates
either way. Better to leave it upto author's judgement call as to
which approach results in clearer code for each particular function.
I would still encourage maximising use of 'g_auto/autofree' where
practical.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2025-03-20 9:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-19 15:21 [PATCH 0/3] Cleanups around returns Markus Armbruster
2025-03-19 15:21 ` [PATCH 1/3] cleanup: Re-run return_directly.cocci Markus Armbruster
2025-03-19 15:21 ` [PATCH 2/3] cleanup: Drop pointless return at end of function Markus Armbruster
2025-03-19 15:21 ` [PATCH 3/3] cleanup: Drop pointless label " Markus Armbruster
2025-03-19 18:59 ` Corey Minyard
2025-03-19 19:21 ` Markus Armbruster
2025-03-19 19:42 ` Corey Minyard
2025-03-19 19:49 ` Markus Armbruster
2025-03-19 20:51 ` Corey Minyard
2025-03-19 20:52 ` Corey Minyard
2025-03-20 9:28 ` Daniel P. Berrangé [this message]
2025-03-19 20:07 ` Alex Bennée
2025-03-19 16:00 ` [PATCH 0/3] Cleanups around returns Richard Henderson
2025-03-19 16:21 ` Peter Maydell
2025-03-19 19:09 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z9vf05yjMWkwmMVp@redhat.com \
--to=berrange@redhat.com \
--cc=armbru@redhat.com \
--cc=corey@minyard.net \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.