unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Jim Meyering <jim@meyering.net>
To: rms@gnu.org
Cc: monnier@iro.umontreal.ca, emacs-devel@gnu.org
Subject: Re: emacs' turn: remove useless if-before-free tests
Date: Sun, 01 Jun 2008 16:22:37 +0200	[thread overview]
Message-ID: <87k5h9grpu.fsf@rho.meyering.net> (raw)
In-Reply-To: <E1K2o9F-0007Rw-Dk@fencepost.gnu.org> (Richard M. Stallman's message of "Sun, 01 Jun 2008 10:03:01 -0400")

Richard M Stallman <rms@gnu.org> wrote:
> Given that most Emacs code calls xfree rather than free, there are not
> many of these if statements, and we rarely add any.
> Why remove them?

Why *not* remove them?

I find that removing the inherent duplication is safe (mechanical),
and makes the code more readable and more maintainable.  For example,

-  if (x_customization_string)
-    free (x_customization_string);
+  free (x_customization_string);

-  if (fdp->infname != NULL) free (fdp->infname);
-  if (fdp->infabsname != NULL) free (fdp->infabsname);
-  if (fdp->infabsdir != NULL) free (fdp->infabsdir);
-  if (fdp->taggedfname != NULL) free (fdp->taggedfname);
-  if (fdp->prop != NULL) free (fdp->prop);
+  free (fdp->infname);
+  free (fdp->infabsname);
+  free (fdp->infabsdir);
+  free (fdp->taggedfname);
+  free (fdp->prop);

Another advantage is that readers won't wonder why the code is performing
what has long been a useless test -- and then re-read to ensure that
the tested expression and the free argument are properly related.
POSIX requires that free(NULL) be a no-op.

The same arguments hold for xfree, once it has been modified to
accept NULL like free does:

-       if (font->bounds.rows[i])
-         xfree (font->bounds.rows[i]);
+       xfree (font->bounds.rows[i]);

-  if (f->output_data.x->saved_menu_event)
-    xfree (f->output_data.x->saved_menu_event);
-
+  xfree (f->output_data.x->saved_menu_event);




  reply	other threads:[~2008-06-01 14:22 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-31 16:29 emacs' turn: remove useless if-before-free tests Jim Meyering
2008-06-01  1:25 ` Miles Bader
2008-06-01 11:10   ` Jim Meyering
2008-06-01 13:48     ` Miles Bader
2008-06-01 14:35       ` Jim Meyering
2008-06-01 14:51         ` David Kastrup
2008-06-01 15:57           ` Miles Bader
2008-06-01 14:03 ` Richard M Stallman
2008-06-01 14:22   ` Jim Meyering [this message]
2008-06-02 10:54     ` Richard M Stallman
2008-06-02 11:22       ` Jim Meyering
2008-06-01 21:41 ` Stefan Monnier
2008-06-02  0:56   ` YAMAMOTO Mitsuharu
2008-06-02  2:05     ` Miles Bader
2008-06-02  2:34       ` YAMAMOTO Mitsuharu
2008-06-02 16:30         ` Richard M Stallman
2008-06-02  2:26     ` Stefan Monnier
2008-06-02  6:14   ` Jim Meyering
2008-06-08 10:53     ` Emanuele Giaquinta
2008-06-08 12:31       ` Jim Meyering
2008-06-10 10:25         ` Jim Meyering
2008-06-12 22:54           ` Jim Meyering

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k5h9grpu.fsf@rho.meyering.net \
    --to=jim@meyering.net \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=rms@gnu.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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).