bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: translate-region occasionally misses chars?


From: Peck, Jeff
Subject: RE: translate-region occasionally misses chars?
Date: Fri, 3 May 2002 23:58:35 -0400

Richard, sorry to be oblique;
In my daily life, "win2k" is a curse word.

I was just trying to apologize in advance for not being able to 
test the problem on a real or clean or useful software platform.
Sorry if I appeared to lump those together with the 'l' word.
Soon as i get a free CPU, i be running maybe GNU on Mach or whatever.
[in a former life i was "address@hidden", remember emacstool?
 yeah, good-riddance to that too.]

As for the bug, the problem is intermittant, but fails reliably for me.
The defun i sent is a reproducible as I have for now.
One time i ran it, an it failed on 50 of 50 trials.
[so I have now modified the procedure to insert to a regular buffer,
 instead of *Messages*, i lost the first 35 iterations...]

I take it from your response that it did not fail when you tried it?
If so, that is in itself is useful information.
Was anyone else able to try it? 
Did anyone else log a missed translation?





(defun test-flip (n &optional i)
  (message "flip %d chars, %d times" (- (point-max)(point-min)) n)
  (sit-for 1)
  (setq i n)
  (let ((flip-string                    ; reverse chars and nums:
         (do ((str "") (i 0 (1+ i))) ((> i 255) str)
           (let ((chr (char-to-string
                       (if (or (<= i 32) (>= i 127)) i (- 159 i)))))
             (setq str (concat str chr)))))
        (flop-string 
         (do ((str "") (i 0 (1+ i))) ((> i 255) str)
           (let ((chr (char-to-string
                       (if (or (<= i 32) (>= i 127)) i i))))
             (setq str (concat str chr)))))
        (buf1 (current-buffer))
        (buf2 (get-buffer-create "*flip*"))
        (buf3 (get-buffer-create "errors"))
        )
    (set-buffer buf3) (erase-buffer)
    (insert (format "flip-string is %s\n" (substring flip-string 32 127)))
    (insert (format "flop-string is %s\n" (substring flop-string 32 127)))

    ;; copy buf1 to buf2
    (set-buffer buf2)
    (erase-buffer)
    (insert-buffer buf1)

    (while (plusp n)
      (let* ((t1 (translate-region (point-min) (point-max) flip-string))
             (t2 (translate-region (point-min) (point-max) flip-string)))
        (setq n (- n 1))
        (let ((comp (abs (compare-buffer-substrings buf1 4 (- (point-max) 4)
                                                    buf2 4 (- (point-max)
4)))))
          (if (not (zerop comp))
              (let ((str1 (save-excursion
                            (set-buffer buf1)
                            (buffer-substring comp (+ comp 7))))
                    (str2 (buffer-substring comp (+ comp 7))))
                (set-buffer buf3)
                (insert (format "%d. error at %d: [%s] [%s] #%d  #%d\n"
                                (- i n) comp str1 str2 t1 t2))
                (set-buffer buf2)
                (sit-for 1)
                (erase-buffer)
                (insert-buffer buf1)
                )))))))



-----Original Message-----
From: Richard Stallman [mailto:address@hidden
Sent: Friday, May 03, 2002 8:37 PM
To: address@hidden
Cc: address@hidden
Subject: Re: translate-region occasionally misses chars?


    But occasionally, as demonstrated by the output below,
    a single character will fail to be translated.
    [can't tell if it fails on pass1 or pass2, but it doesn't matter]

Can you find a reproducible test case to report?  It is hard to debug
without that.

If you try the same test case over and over, do you get varying
results?

    It fails on both my Win2k machines, I don't a have a unix/linux to test.

Please dont call Windows "win", and please don't call the whole system
"Linux".

In hacker terminology, calling something a "win" is a form of praise.
If you wish to praise Microsoft Windows, you're free to do so; but if you
don't, then you might want to think twice about using the term "win2k".

As for the Linux system, it is more GNU than Linux, so please call it
"GNU/Linux".  If you call it "Linux", you're giving someone else the
credit for our work, and that makes it hard for us to recruit support
for further work.  See http://www.gnu.org/gnu/linux-and-gnu.html.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]