Subject: 25.3; xfont_draw in xfont.c does the same thing in both branches of an if statement

From: Daniel Brooks <[email-masked]>
Date: Sat, 03 Feb 2018 17:13:46 -0800

I happened to be looking at this function and noticed that both sides of
the with_background condition do exactly the same thing; I'm sure it
gradually got so.

http://git.savannah.gnu.org/cgit/emacs.git/tree/src/xfont.c#n1046

db48x

In GNU Emacs 25.3.1 (x86_64-redhat-linux-gnu, GTK+ Version 3.22.19)
 of 2017-09-14 built on buildvm-31.phx2.fedoraproject.org
Windowing system distributor 'Fedora Project', version 11.0.11906000
System Description:	Fedora release 27 (Twenty Seven)

Configured using:
 'configure --build=x86_64-redhat-linux-gnu
 --host=x86_64-redhat-linux-gnu --program-prefix=
 --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr
 --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc
 --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64
 --libexecdir=/usr/libexec --localstatedir=/var
 --sharedstatedir=/var/lib --mandir=/usr/share/man
 --infodir=/usr/share/info --with-dbus --with-gif --with-jpeg --with-png
 --with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3
 --with-gpm=no --with-xwidgets --with-modules
 build_alias=x86_64-redhat-linux-gnu host_alias=x86_64-redhat-linux-gnu
 'CFLAGS=-DMAIL_USE_LOCKF -O2 -g -pipe -Wall -Werror=format-security
 -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong
 --param=ssp-buffer-size=4 -grecord-gcc-switches
 -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic'
 LDFLAGS=-Wl,-z,relro
 PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND DBUS GCONF GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 MODULES XWIDGETS

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: C/l

Minor modes in effect:
  diff-auto-refine-mode: t
  flx-ido-mode: t
  ido-everywhere: t
  projectile-mode: t
  global-whitespace-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent messages:
Entering debugger...
Back to top level
Undo! [3 times]
scroll-up-command: End of buffer
apply: The mark is not set now, so there is no region
Build directory is missing! Create the directory, run cmake and make inside of it.
Mark saved where search started
Quit
Undo!
Mark saved where search started

Load-path shadows:
/home/db48x/.emacs.d/elpa/org-20171023/ox-latex hides /usr/share/emacs/25.3/lisp/org/ox-latex
/home/db48x/.emacs.d/elpa/org-20171023/ox-icalendar hides /usr/share/emacs/25.3/lisp/org/ox-icalendar
/home/db48x/.emacs.d/elpa/org-20171023/ox-html hides /usr/share/emacs/25.3/lisp/org/ox-html
/home/db48x/.emacs.d/elpa/org-20171023/ox-beamer hides /usr/share/emacs/25.3/lisp/org/ox-beamer
/home/db48x/.emacs.d/elpa/org-20171023/ox-ascii hides /usr/share/emacs/25.3/lisp/org/ox-ascii
/home/db48x/.emacs.d/elpa/org-20171023/org hides /usr/share/emacs/25.3/lisp/org/org
/home/db48x/.emacs.d/elpa/org-20171023/org-w3m hides /usr/share/emacs/25.3/lisp/org/org-w3m
/home/db48x/.emacs.d/elpa/org-20171023/org-version hides /usr/share/emacs/25.3/lisp/org/org-version
/home/db48x/.emacs.d/elpa/org-20171023/org-timer hides /usr/share/emacs/25.3/lisp/org/org-timer
/home/db48x/.emacs.d/elpa/org-20171023/org-table hides /usr/share/emacs/25.3/lisp/org/org-table
/home/db48x/.emacs.d/elpa/org-20171023/org-src hides /usr/share/emacs/25.3/lisp/org/org-src
/home/db48x/.emacs.d/elpa/org-20171023/org-rmail hides /usr/share/emacs/25.3/lisp/org/org-rmail
/home/db48x/.emacs.d/elpa/org-20171023/org-protocol hides /usr/share/emacs/25.3/lisp/org/org-protocol
/home/db48x/.emacs.d/elpa/org-20171023/org-plot hides /usr/share/emacs/25.3/lisp/org/org-plot
/home/db48x/.emacs.d/elpa/org-20171023/org-pcomplete hides /usr/share/emacs/25.3/lisp/org/org-pcomplete
/home/db48x/.emacs.d/elpa/org-20171023/org-mouse hides /usr/share/emacs/25.3/lisp/org/org-mouse
/home/db48x/.emacs.d/elpa/org-20171023/ox hides /usr/share/emacs/25.3/lisp/org/ox
/home/db48x/.emacs.d/elpa/org-20171023/org-mobile hides /usr/share/emacs/25.3/lisp/org/org-mobile
/home/db48x/.emacs.d/elpa/org-20171023/ox-texinfo hides /usr/share/emacs/25.3/lisp/org/ox-texinfo
/home/db48x/.emacs.d/elpa/org-20171023/org-mhe hides /usr/share/emacs/25.3/lisp/org/org-mhe
/home/db48x/.emacs.d/elpa/org-20171023/org-macs hides /usr/share/emacs/25.3/lisp/org/org-macs
/home/db48x/.emacs.d/elpa/org-20171023/ox-publish hides /usr/share/emacs/25.3/lisp/org/ox-publish
/home/db48x/.emacs.d/elpa/org-20171023/org-macro hides /usr/share/emacs/25.3/lisp/org/org-macro
/home/db48x/.emacs.d/elpa/org-20171023/ox-org hides /usr/share/emacs/25.3/lisp/org/ox-org
/home/db48x/.emacs.d/elpa/org-20171023/org-loaddefs hides /usr/share/emacs/25.3/lisp/org/org-loaddefs
/home/db48x/.emacs.d/elpa/org-20171023/ox-odt hides /usr/share/emacs/25.3/lisp/org/ox-odt
/home/db48x/.emacs.d/elpa/org-20171023/org-list hides /usr/share/emacs/25.3/lisp/org/org-list
/home/db48x/.emacs.d/elpa/org-20171023/ox-md hides /usr/share/emacs/25.3/lisp/org/ox-md
/home/db48x/.emacs.d/elpa/org-20171023/org-irc hides /usr/share/emacs/25.3/lisp/org/org-irc
/home/db48x/.emacs.d/elpa/org-20171023/org-install hides /usr/share/emacs/25.3/lisp/org/org-install
/home/db48x/.emacs.d/elpa/org-20171023/ox-man hides /usr/share/emacs/25.3/lisp/org/ox-man
/home/db48x/.emacs.d/elpa/org-20171023/org-inlinetask hides /usr/share/emacs/25.3/lisp/org/org-inlinetask
/home/db48x/.emacs.d/elpa/org-20171023/org-info hides /usr/share/emacs/25.3/lisp/org/org-info
/home/db48x/.emacs.d/elpa/org-20171023/org-indent hides /usr/share/emacs/25.3/lisp/org/org-indent
/home/db48x/.emacs.d/elpa/org-20171023/org-id hides /usr/share/emacs/25.3/lisp/org/org-id
/home/db48x/.emacs.d/elpa/org-20171023/org-habit hides /usr/share/emacs/25.3/lisp/org/org-habit
/home/db48x/.emacs.d/elpa/org-20171023/org-gnus hides /usr/share/emacs/25.3/lisp/org/org-gnus
/home/db48x/.emacs.d/elpa/org-20171023/org-footnote hides /usr/share/emacs/25.3/lisp/org/org-footnote
/home/db48x/.emacs.d/elpa/org-20171023/org-feed hides /usr/share/emacs/25.3/lisp/org/org-feed
/home/db48x/.emacs.d/elpa/org-20171023/org-faces hides /usr/share/emacs/25.3/lisp/org/org-faces
/home/db48x/.emacs.d/elpa/org-20171023/org-eshell hides /usr/share/emacs/25.3/lisp/org/org-eshell
/home/db48x/.emacs.d/elpa/org-20171023/org-entities hides /usr/share/emacs/25.3/lisp/org/org-entities
/home/db48x/.emacs.d/elpa/org-20171023/org-element hides /usr/share/emacs/25.3/lisp/org/org-element
/home/db48x/.emacs.d/elpa/org-20171023/org-docview hides /usr/share/emacs/25.3/lisp/org/org-docview
/home/db48x/.emacs.d/elpa/org-20171023/org-datetree hides /usr/share/emacs/25.3/lisp/org/org-datetree
/home/db48x/.emacs.d/elpa/org-20171023/org-ctags hides /usr/share/emacs/25.3/lisp/org/org-ctags
/home/db48x/.emacs.d/elpa/org-20171023/ob-org hides /usr/share/emacs/25.3/lisp/org/ob-org
/home/db48x/.emacs.d/elpa/org-20171023/org-crypt hides /usr/share/emacs/25.3/lisp/org/org-crypt
/home/db48x/.emacs.d/elpa/org-20171023/ob-ocaml hides /usr/share/emacs/25.3/lisp/org/ob-ocaml
/home/db48x/.emacs.d/elpa/org-20171023/ob hides /usr/share/emacs/25.3/lisp/org/ob
/home/db48x/.emacs.d/elpa/org-20171023/ob-mscgen hides /usr/share/emacs/25.3/lisp/org/ob-mscgen
/home/db48x/.emacs.d/elpa/org-20171023/ob-maxima hides /usr/share/emacs/25.3/lisp/org/ob-maxima
/home/db48x/.emacs.d/elpa/org-20171023/ob-tangle hides /usr/share/emacs/25.3/lisp/org/ob-tangle
/home/db48x/.emacs.d/elpa/org-20171023/ob-matlab hides /usr/share/emacs/25.3/lisp/org/ob-matlab
/home/db48x/.emacs.d/elpa/org-20171023/ob-makefile hides /usr/share/emacs/25.3/lisp/org/ob-makefile
/home/db48x/.emacs.d/elpa/org-20171023/ob-table hides /usr/share/emacs/25.3/lisp/org/ob-table
/home/db48x/.emacs.d/elpa/org-20171023/ob-lob hides /usr/share/emacs/25.3/lisp/org/ob-lob
/home/db48x/.emacs.d/elpa/org-20171023/ob-sqlite hides /usr/share/emacs/25.3/lisp/org/ob-sqlite
/home/db48x/.emacs.d/elpa/org-20171023/ob-lisp hides /usr/share/emacs/25.3/lisp/org/ob-lisp
/home/db48x/.emacs.d/elpa/org-20171023/org-compat hides /usr/share/emacs/25.3/lisp/org/org-compat
/home/db48x/.emacs.d/elpa/org-20171023/ob-lilypond hides /usr/share/emacs/25.3/lisp/org/ob-lilypond
/home/db48x/.emacs.d/elpa/org-20171023/ob-sql hides /usr/share/emacs/25.3/lisp/org/ob-sql
/home/db48x/.emacs.d/elpa/org-20171023/ob-ledger hides /usr/share/emacs/25.3/lisp/org/ob-ledger
/home/db48x/.emacs.d/elpa/org-20171023/ob-shen hides /usr/share/emacs/25.3/lisp/org/ob-shen
/home/db48x/.emacs.d/elpa/org-20171023/ob-latex hides /usr/share/emacs/25.3/lisp/org/ob-latex
/home/db48x/.emacs.d/elpa/org-20171023/ob-keys hides /usr/share/emacs/25.3/lisp/org/ob-keys
/home/db48x/.emacs.d/elpa/org-20171023/ob-screen hides /usr/share/emacs/25.3/lisp/org/ob-screen
/home/db48x/.emacs.d/elpa/org-20171023/ob-js hides /usr/share/emacs/25.3/lisp/org/ob-js
/home/db48x/.emacs.d/elpa/org-20171023/org-colview hides /usr/share/emacs/25.3/lisp/org/org-colview
/home/db48x/.emacs.d/elpa/org-20171023/ob-java hides /usr/share/emacs/25.3/lisp/org/ob-java
/home/db48x/.emacs.d/elpa/org-20171023/org-clock hides /usr/share/emacs/25.3/lisp/org/org-clock
/home/db48x/.emacs.d/elpa/org-20171023/ob-io hides /usr/share/emacs/25.3/lisp/org/ob-io
/home/db48x/.emacs.d/elpa/org-20171023/org-capture hides /usr/share/emacs/25.3/lisp/org/org-capture
/home/db48x/.emacs.d/elpa/org-20171023/ob-haskell hides /usr/share/emacs/25.3/lisp/org/ob-haskell
/home/db48x/.emacs.d/elpa/org-20171023/ob-scheme hides /usr/share/emacs/25.3/lisp/org/ob-scheme
/home/db48x/.emacs.d/elpa/org-20171023/ob-gnuplot hides /usr/share/emacs/25.3/lisp/org/ob-gnuplot
/home/db48x/.emacs.d/elpa/org-20171023/ob-fortran hides /usr/share/emacs/25.3/lisp/org/ob-fortran
/home/db48x/.emacs.d/elpa/org-20171023/ob-sass hides /usr/share/emacs/25.3/lisp/org/ob-sass
/home/db48x/.emacs.d/elpa/org-20171023/ob-exp hides /usr/share/emacs/25.3/lisp/org/ob-exp
/home/db48x/.emacs.d/elpa/org-20171023/ob-ruby hides /usr/share/emacs/25.3/lisp/org/ob-ruby
/home/db48x/.emacs.d/elpa/org-20171023/ob-eval hides /usr/share/emacs/25.3/lisp/org/ob-eval
/home/db48x/.emacs.d/elpa/org-20171023/org-bibtex hides /usr/share/emacs/25.3/lisp/org/org-bibtex
/home/db48x/.emacs.d/elpa/org-20171023/ob-emacs-lisp hides /usr/share/emacs/25.3/lisp/org/ob-emacs-lisp
/home/db48x/.emacs.d/elpa/org-20171023/ob-ref hides /usr/share/emacs/25.3/lisp/org/ob-ref
/home/db48x/.emacs.d/elpa/org-20171023/ob-dot hides /usr/share/emacs/25.3/lisp/org/ob-dot
/home/db48x/.emacs.d/elpa/org-20171023/ob-python hides /usr/share/emacs/25.3/lisp/org/ob-python
/home/db48x/.emacs.d/elpa/org-20171023/ob-ditaa hides /usr/share/emacs/25.3/lisp/org/ob-ditaa
/home/db48x/.emacs.d/elpa/org-20171023/ob-plantuml hides /usr/share/emacs/25.3/lisp/org/ob-plantuml
/home/db48x/.emacs.d/elpa/org-20171023/ob-css hides /usr/share/emacs/25.3/lisp/org/ob-css
/home/db48x/.emacs.d/elpa/org-20171023/org-bbdb hides /usr/share/emacs/25.3/lisp/org/org-bbdb
/home/db48x/.emacs.d/elpa/org-20171023/ob-core hides /usr/share/emacs/25.3/lisp/org/ob-core
/home/db48x/.emacs.d/elpa/org-20171023/ob-picolisp hides /usr/share/emacs/25.3/lisp/org/ob-picolisp
/home/db48x/.emacs.d/elpa/org-20171023/ob-comint hides /usr/share/emacs/25.3/lisp/org/ob-comint
/home/db48x/.emacs.d/elpa/org-20171023/ob-perl hides /usr/share/emacs/25.3/lisp/org/ob-perl
/home/db48x/.emacs.d/elpa/org-20171023/ob-clojure hides /usr/share/emacs/25.3/lisp/org/ob-clojure
/home/db48x/.emacs.d/elpa/org-20171023/ob-calc hides /usr/share/emacs/25.3/lisp/org/ob-calc
/home/db48x/.emacs.d/elpa/org-20171023/org-attach hides /usr/share/emacs/25.3/lisp/org/org-attach
/home/db48x/.emacs.d/elpa/org-20171023/ob-octave hides /usr/share/emacs/25.3/lisp/org/ob-octave
/home/db48x/.emacs.d/elpa/org-20171023/ob-awk hides /usr/share/emacs/25.3/lisp/org/ob-awk
/home/db48x/.emacs.d/elpa/org-20171023/ob-asymptote hides /usr/share/emacs/25.3/lisp/org/ob-asymptote
/home/db48x/.emacs.d/elpa/org-20171023/ob-R hides /usr/share/emacs/25.3/lisp/org/ob-R
/home/db48x/.emacs.d/elpa/org-20171023/org-archive hides /usr/share/emacs/25.3/lisp/org/org-archive
/home/db48x/.emacs.d/elpa/org-20171023/ob-C hides /usr/share/emacs/25.3/lisp/org/ob-C
/home/db48x/.emacs.d/elpa/org-20171023/org-agenda hides /usr/share/emacs/25.3/lisp/org/org-agenda
/home/db48x/.emacs.d/elpa/soap-client-3.1.3/soap-inspect hides /usr/share/emacs/25.3/lisp/net/soap-inspect
/home/db48x/.emacs.d/elpa/soap-client-3.1.3/soap-client hides /usr/share/emacs/25.3/lisp/net/soap-client
/home/db48x/.emacs.d/elpa/seq-2.20/seq hides /usr/share/emacs/25.3/lisp/emacs-lisp/seq

Features:
(shadow sort mail-extr emacsbug message idna dired rfc822 mml mml-sec
password-cache epg mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
debug vc-git diff-mode macrostep-c subr-x cmacexp macrostep pp
cpputils-cmake misearch multi-isearch pulse jka-compr helpful trace
edebug info-look shut-up dash-functional elisp-refs loop iso-transl
elisp-slime-nav org-element avl-tree org org-macro org-footnote
org-pcomplete pcomplete org-list org-faces org-entities noutline outline
org-version ob-emacs-lisp ob-org ob ob-tangle org-src ob-ref ob-lob
ob-table ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs format-spec find-func cal-menu calendar cal-loaddefs gnus
gnus-ems nnheader gnus-util mail-utils mm-util help-fns mail-prsvr dbus
ido-completing-read+ memoize cus-edit wid-edit minibuf-eldef xml flx-ido
flx beancount easy-mmode ido js2-refactor js2r-paredit js2r-conveniences
js2r-conditionals js2r-wrapping js2r-functions yasnippet js2r-vars
multiple-cursors-core rect js2r-iife js2r-formatting js2r-helpers s dash
js2-mode etags xref project eieio eieio-core js sgml-mode json map
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs imenu powerline powerline-separators color
powerline-themes projectile advice grep compile comint ansi-color ring
ibuf-ext ibuffer thingatpt finder-inf rx cl-seq cl-macs cl
slime-autoloads info package epg-config seq byte-opt gv bytecomp
byte-compile cl-extra help-mode easymenu cconv edmacro kmacro
cl-loaddefs pcase cl-lib disp-table wombat-theme whitespace cus-start
cus-load time-date mule-util tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel x-win term/common-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list newcomment elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame
cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian
slovak czech european ethiopic indian cyrillic chinese charscript
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer
cl-preloaded nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote dbusbind inotify
dynamic-setting system-font-setting font-render-setting xwidget-internal
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 581654 209318)
 (symbols 48 57602 1)
 (miscs 40 148 797)
 (strings 32 172009 62537)
 (string-bytes 1 4731187)
 (vectors 16 47315)
 (vector-slots 8 973019 31389)
 (floats 8 1442 2204)
 (intervals 56 19913 4420)
 (buffers 976 23))