This bug report will be sent to the XEmacs Development Team,
not to your local site managers!!
Please write in English, because the XEmacs maintainers do not have
translators to read other languages for them.
Please describe as succinctly as possible:
- What happened.
- What you thought should have happened.
- Precisely what you were doing at the time.
Please also include any C or lisp back-traces that you may have.
================================================================
Dear Bug Team!
On Windows there is an infinite loop in the function p4-detect-p4 in p4.el.
The code in question is:
(let ((p4config (getenv "P4CONFIG"))
(p4-cfg-dir (cond (buffer-file-name ;; extrapolate from name
(file-name-directory
(file-truename (buffer-file-name))))
(t default-directory) ;; hmm, use default
)))
(while (not (or (string-match "^\\([a-zA-Z]:\\)?/$" p4-cfg-dir)
(file-exists-p (concat p4-cfg-dir p4config))))
(setq p4-cfg-dir
(substring p4-cfg-dir 0
(string-match "[^/]*/?$" p4-cfg-dir))))
Which is supposed to traverse up a directory tree looking for a
p4config file and thus show that this is a file controlled by Perforce.
However, in the case of windows, the setq at the end of the loop will
reset p4-cfg-dir to "", which will never match the loop termination
condition. Thus the infinite loop in the case when there is no
p4config file in the file tree (which is a common occurance).
On an aesthetic note, doing filename manipulations like this is ugly
and error prone.
The solution to the problem is to replace the loop with:
(while (not (or (string= p4-cfg-dir
(file-name-directory (directory-file-name p4-cfg-dir)))
(file-exists-p (concat p4-cfg-dir p4config))))
(setq p4-cfg-dir
(file-name-directory (directory-file-name p4-cfg-dir))
))
This uses the XEmacs built-in filename manipulation routines to find
the parent directories, and should work on all filesystems (tested on
Windows only). For termination, it relies on the fact that the parent
directory of the root is the root in Unix or DOS filesystems ie
(file-name-directory (directory-file-name "/")) is "/".
================================================================
System Info to help track down your bug:
---------------------------------------
OS version:
Microsoft Windows 2000 [Version 5.00.2195]
OS: Windows_NT
XEmacs 21.4.8 \"Honest Recruiter (Windows [3])\" configured for `i586-pc-win32'.
Building XEmacs in \"f:\\xemacs\\xemacs-21.4-release\\nt\".
Using compiler \"cl -nologo -W3 -O2 -G5 -ML\".
Installing XEmacs in \"c:\\Program Files\\XEmacs\\XEmacs-21.4.8\".
Package path is \"~\\.xemacs;;c:\\Program Files\\XEmacs\\site-packages;c:\\Program Files\\XEmacs\\xemacs-packages\".
Compiling in support for Microsoft Windows native GUI.
Compiling in support for XPM images.
Compiling in support for GIF images.
Compiling in support for PNG images.
Compiling in support for TIFF images.
Compiling in support for JPEG images.
Compiling in support for X-Face message headers.
Compiling in support for toolbars.
Compiling in support for dialogs.
Compiling in support for widgets.
Compiling in support for native sounds.
Compiling in fast dired implementation.
Using minimal tagbits.
Using indexed lrecord implementation.
Using portable dumper.
Load-Path Lisp Shadows:
----------------------
nil
Installed XEmacs Packages:
-------------------------
((zenirc:version 1.13 :type regular)
(xslt-process :version 1.09 :type regular)
(xslide :version 1.01 :type regular)
(xemacs-devel :version 1.46 :type single-file)
(xemacs-base :version 1.65 :type regular)
(w3 :version 1.25 :type regular)
(vm :version 7.07 :type regular)
(viper :version 1.34 :type regular)
(view-process :version 1.11 :type regular)
(vhdl :version 1.15 :type regular)
(vc-cc :version 1.21 :type regular)
(vc :version 1.33 :type regular)
(tramp :version 1.05 :type regular)
(tpu :version 1.12 :type regular)
(tooltalk :version 1.13 :type regular)
(tm :version 1.34 :type regular)
(time :version 1.11 :type regular)
(textools :version 1.12 :type regular)
(text-modes :version 1.48 :type single-file)
(texinfo :version 1.2 :type regular)
(supercite :version 1.19 :type regular)
(strokes :version 1.08 :type regular)
(speedbar :version 1.23 :type regular)
(sounds-wav :version 1.1 :type regular)
(sounds-au :version 1.1 :type regular)
(slider :version 1.13 :type regular)
(sieve :version 1.07 :type regular)
(sh-script :version 1.15 :type regular)
(sgml :version 1.08 :type regular)
(semantic :version 1.12 :type regular)
(scheme :version 1.11 :type regular)
(rmail :version 1.13 :type regular)
(reftex :version 1.25 :type regular)
(psgml :version 1.28 :type regular)
(ps-print :version 1.04 :type regular)
(prog-modes
:version
1
.59
:type
single-file)
(pcomplete :version 1.01 :type regular)
(pcl-cvs :version 1.63 :type regular)
(pc :version 1.25 :type single-file)
(os-utils :version 1.28 :type single-file)
(net-utils :version 1.27 :type single-file)
(mmm-mode :version 1.0 :type regular)
(misc-games :version 1.15 :type single-file)
(mine :version 1.14 :type regular)
(mh-e :version 1.14 :type regular)
(mew :version 1.17 :type regular)
(mailcrypt :version 2.11 :type regular)
(mail-lib :version 1.46 :type regular)
(liece :version 1.06 :type regular)
(jde :version 1.35 :type regular)
(ispell :version 1.24 :type regular)
(ilisp :version 1.27 :type regular)
(igrep :version 1.08 :type regular)
(idlwave :version 1.25 :type regular)
(ibuffer :version 1.07 :type regular)
(hm--html-menus :version 1.18 :type regular)
(haskell-mode :version 1.03 :type regular)
(gnus :version 1.62 :type regular)
(gnats :version 1.15 :type regular)
(games :version 1.13 :type regular)
(fsf-compat :version 1.11 :type single-file)
(frame-icon :version 1.09 :type regular)
(forms :version 1.14 :type regular)
(footnote :version 1.15 :type regular)
(eudc :version 1.36 :type regular)
(eterm :version 1.13 :type regular)
(ess :version 1.02 :type regular)
(eshell :version 1.03 :type regular)
(emerge :version 1.09 :type regular)
(elib :version 1.1 :type single-file)
(eieio :version 1.02 :type regular)
(efs :version 1.29 :type regular)
(edt :version 1.12 :type regular)
(edit-utils :version 1.89 :type single-file)
(ediff :version 1.41 :type regular)
(edebug :version 1.14 :type regular)
(dired :version 1.12 :type regular)
(dictionary :version 1.11 :type regular)
(debug :version 1.15 :type regular)
(crisp :version 1.12 :type regular)
(cookie :version 1.14 :type regular)
(clearcase :version 1.04 :type regular)
(cc-mode :version 1.28 :type regular)
(calendar :version 1.18 :type regular)
(calc :version 1.23 :type regular)
(c-support :version 1.16 :type single-file)
(build :version 1.05 :type regular)
(bbdb :version 1.21 :type regular)
(auctex :version 1.32 :type regular)
(apel :version 1.23 :type regular)
(ada :version 1.1 :type regular)
(Sun :version 1.13 :type regular))
Features:
--------
(mail-abbrevs xemacsbug shadow dabbrev view-less view cperl-mode
hyper-apropos debug efs-cu lazy-lock p4 env vc ring vc-hooks iswitchb
hideif package-get package-admin config paren blink-paren smtpmail
time-stamp sendmail rfc822 advice advice-preload edmacro hideshow
cc-mode cc-align cc-cmds cc-engine cc-styles cc-langs cc-vars wid-edit
cc-menus imenu cc-defs func-menu font-lock info cus-face filladapt
zenirc-autoloads xslt-process-autoloads xslide-autoloads
xemacs-devel-autoloads xemacs-base-autoloads w3-autoloads vm-autoloads
viper-autoloads view-process-autoloads vhdl-autoloads vc-cc-autoloads
vc-autoloads tramp-autoloads tpu-autoloads tooltalk-autoloads
tm-autoloads time-autoloads textools-autoloads text-modes-autoloads
texinfo-autoloads supercite-autoloads strokes-autoloads
speedbar-autoloads sounds-wav-autoloads sounds-au-autoloads
slider-autoloads sieve-autoloads sh-script-autoloads sgml-autoloads
semantic-autoloads scheme-autoloads rmail-autoloads reftex-autoloads
psgml-autoloads ps-print-autoloads prog-modes-autoloads
pcomplete-autoloads pcl-cvs-autoloads pc-autoloads os-utils-autoloads
net-utils-autoloads mmm-mode-autoloads misc-games-autoloads
mine-autoloads mh-e-autoloads mew-autoloads mailcrypt-autoloads
mail-lib-autoloads liece-autoloads jde-autoloads ispell-autoloads
ilisp-autoloads igrep-autoloads idlwave-autoloads ibuffer-autoloads
hm--html-menus-autoloads haskell-mode-autoloads gnus-autoloads
gnats-autoloads games-autoloads fsf-compat-autoloads
frame-icon-autoloads forms-autoloads footnote-autoloads eudc-autoloads
eterm-autoloads ess-autoloads eshell-autoloads emerge-autoloads
elib-autoloads eieio-autoloads efs-autoloads edt-autoloads
edit-utils-autoloads ediff-autoloads edebug-autoloads dired-autoloads
dictionary-autoloads debug-autoloads crisp-autoloads cookie-autoloads
clearcase-autoloads cc-mode-autoloads calendar-autoloads
calc-autoloads c-support-autoloads build-autoloads bbdb-autoloads
auctex-autoloads apel-autoloads ada-autoloads Sun-autoloads
lisp-autoloads loadhist auto-show fontl-hooks code-cmds gutter-items
menubar-items x-menubar dragdrop mode-motion mouse itimer auto-save
lisp-mode easymenu iso8859-1 page buff-menu lib-complete help-nomule
cus-file derived frame text-props obsolete cus-start custom widget
cl-extra mini-cl cl cl-19 packages backquote very-early-lisp
file-coding mswindows-scrollbars mswindows toolbar native-sound
scrollbar network-streams subprocesses menu-accelerator-support
menubar md5 xemacs gutter tiff png gif jpeg xface xpm xbm
lisp-float-type windows-nt dragdrop-api dialog devices window-system
base64)
Recent keystrokes:
-----------------
down down down down down down down down down down C-e
C-x C-e C-x C-s C-x C-f M-p M-p M-p M-p M-p RET C-h
a b u g RET down down down down down down down down
down down down down down down down down down down down
down down down down down down down down down down down
down down down down down down down down down down down
down down down down down down up up up up down RET
C-x 1 down down RET misc-user M-x r e p o r t - x e
TAB RET
Recent messages (most recent first):
-----------------------------------
Loading xemacsbug...done
Loading xemacsbug...
Scanning for "hard" Perl constructions... done
Scanning for "hard" Perl constructions...
Wrote c:\apps\XEmacs\xemacs-packages\lisp\prog-modes\p4-new.el
p4-detect-p4
Matches: (defun p4-detect-p4 ()
nil
Matches: (defun p4-detect-p4 ()
nil
"c:\\"
t
"c:\\"
"c:\\"
"c:\\"
nil
t
Wrong number of arguments: string=, 1
"c:\\"
Selecting menu item Text Comparison...done