Subject: 25.1; after-string of overlay may not be displayed

From: [email-masked]
Date: Fri, 24 Feb 2017 15:19:06 +0900

Evaluating the form below, I expect to see 4 <BeforeAfter>.
It displays 3 <Before> and 1 <BeforeAfter>.
If before-string is not specified, 4 <After> are displayed.

(dotimes (i 4)
  (let ((p (point)) ol)
    (insert "<HIDDEN>\n")
    (setq ol (make-overlay (1+ p) (- (point) 2)))
    (cond ((= i 0) (overlay-put ol 'display ""))
          ((= i 1) (overlay-put ol 'invisible t))
          ((= i 2) (put-text-property (1+ p) (- (point) 2) 'display ""))
          ((= i 3) (put-text-property (1+ p) (- (point) 2) 'invisible t)))
    (overlay-put ol 'before-string "Before")
    (overlay-put ol 'after-string  "After")
    (overlay-put ol 'evaporate t)))

In GNU Emacs 25.1.1 (i686-w64-mingw32)
 of 2016-09-18 built on LAPHROAIG
Windowing system distributor 'Microsoft Corp.', version 6.0.6002
Configured using:
 'configure --host=i686-w64-mingw32 --without-dbus
 --without-compress-install CFLAGS=-static'

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2 ZLIB
TOOLKIT_SCROLL_BARS

Important settings:
  value of $LANG: JPN
  locale-coding-system: cp932

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-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
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Auto-saving...done
Mark set
Quit
Mark set [2 times]
Sending...
Mark set [2 times]
Sending via mail...
Sending email 
Sending email done
Sending...done

Load-path shadows:
None found.

Features:
(network-stream nsm starttls tls gnutls mailalias smtpmail auth-source
cl-seq eieio byte-opt bytecomp byte-compile cl-extra cconv eieio-core
cl-macs gv misearch multi-isearch pp shadow sort mail-extr emacsbug
message dired format-spec rfc822 mml mml-sec password-cache epg
epg-config gnus-util mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util help-fns help-mode easymenu cl-loaddefs pcase cl-lib mail-prsvr
mail-utils time-date mule-util japan-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel dos-w32 ls-lisp
disp-table w32-win w32-vars term/common-win 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 w32notify w32 multi-tty
make-network-process emacs)

Memory information:
((conses 8 108615 23445)
 (symbols 32 21061 0)
 (miscs 32 97 278)
 (strings 16 20086 4799)
 (string-bytes 1 573995)
 (vectors 8 15202)
 (vector-slots 4 543608 13164)
 (floats 8 208 501)
 (intervals 28 853 85)
 (buffers 520 25))