emacs-devel
[Top][All Lists]
Advanced

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

Re: set-process-filter-multibyte doesn't work well


From: Andreas Schwab
Subject: Re: set-process-filter-multibyte doesn't work well
Date: Sat, 08 Mar 2008 16:45:08 +0100
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.1 (gnu/linux)

MATSUYAMA Tomohiro <address@hidden> writes:

> (require 'comint)
> (make-comint "jdb" "jdb")
> (setq proc (get-process "jdb"))
> (set-process-filter-multibyte proc t)
> (process-filter-multibyte-p proc) ;; => nil
>
> I don't understand what happened in Fset_process_filter_multibyte :-(
>
>   CHECK_PROCESS (process);
>   p = XPROCESS (process);
>   p->filter_multibyte = !NILP (flag);
> + printf("%d %d\n", !NILP (flag), p->filter_multibyte); /* 1 0 */
>   setup_process_coding_systems (process);

Does this patch help?  Bitfields declared as int can be either signed or
unsigned, and signed one-bit fields are not particular useful.

--- process.h   09 Jan 2008 10:29:39 +0100      1.41
+++ process.h   08 Mär 2008 16:41:00 +0100      
@@ -102,28 +102,28 @@ struct Lisp_Process
     /* Should we delay reading output from this process.
        Initialized from `Vprocess_adaptive_read_buffering'.
        0 = nil, 1 = t, 2 = other.  */
-    int adaptive_read_buffering : 2;
+    unsigned int adaptive_read_buffering : 2;
     /* Skip reading this process on next read.  */
-    int read_output_skip : 1;
+    unsigned int read_output_skip : 1;
     /* Non-nil means kill silently if Emacs is exited.
        This is the inverse of the `query-on-exit' flag.  */
-    int kill_without_query : 1;
+    unsigned int kill_without_query : 1;
     /* Non-nil if communicating through a pty.  */
-    int pty_flag : 1;
+    unsigned int pty_flag : 1;
     /* Flag to set coding-system of the process buffer from the
        coding_system used to decode process output.  */
-    int inherit_coding_system_flag : 1;
+    unsigned int inherit_coding_system_flag : 1;
     /* Flag to decide the multibyteness of a string given to the
        filter (if any).  It is initialized to the value of
        `default-enable-multibyte-characters' when the process is
        generated, and can be changed by the function
        `set-process-filter-multibyte'. */
-    int filter_multibyte : 1;
+    unsigned int filter_multibyte : 1;
     /* Record the process status in the raw form in which it comes from `wait'.
        This is to avoid consing in a signal handler.  The `raw_status_new'
        flag indicates that `raw_status' contains a new status that still
        needs to be synced to `status'.  */
-    int raw_status_new : 1;
+    unsigned int raw_status_new : 1;
     int raw_status;
 };
 

Andreas.

-- 
Andreas Schwab, SuSE Labs, address@hidden
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."




reply via email to

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