Commit a442d743b0f3479e256dfbf70ead51c3d7aaeed6

Fix some binding-testsuite.el test cases when threads are used.

This one still fails:

(defvar binding-test-some-local 'some)

(defvar binding-test-buffer-A (get-buffer-create "A"))

(with-current-buffer binding-test-buffer-A
  (set (make-variable-buffer-local 'binding-test-some-local) 'local))

(run-in-thread '(with-current-buffer binding-test-buffer-A
                  (message "local: %s" binding-test-some-local)))
(while (yield))
src/data.c
(13 / 8)
  
839839
840840 break;
841841 }
842
843842 }
844843
844 if (EQ (parent, Qnil))
845 val = XTHREADLOCAL (l->realvalue)->global;
846
845847 XSETFASTINT (len, 4);
846848 ret = Fmake_vector (len, Qnil);
847849
928928 Lisp_Object cons = assq_no_quit (get_current_thread (),
929929 thr->thread_alist);
930930 if (!EQ (cons, Qnil))
931 return &XCDR_AS_LVALUE (cons);
931 return &XCDR_AS_LVALUE (cons);
932932
933933 return &thr->global;
934934 }
958958 if (NILP (cons))
959959 {
960960 struct Lisp_ThreadLocal *local = XTHREADLOCAL (*root);
961 cons = Fcons (get_current_thread (), XTHREADLOCAL (*root)->global);
961 cons = Fcons (get_current_thread (), Qthread_local_mark);
962962 local->thread_alist = Fcons (cons, local->thread_alist);
963963 }
964964
11931193 !NILP (it); it = XCDR (it))
11941194 {
11951195 Lisp_Object head = XCDR (XCAR (it));
1196 if (EQ (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)),
1196 if (1 || EQ (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)),
11971197 BLOCAL_BUFFER_VEC (head))
11981198 && (! XBUFFER_LOCAL_VALUE (valcontents)->check_frame
11991199 || EQ (selected_frame, BLOCAL_FRAME_VEC (head))))
12021202 = XBUFFER_LOCAL_VALUE (valcontents)->realvalue;
12031203
12041204 if (EQ (BLOCAL_CDR_VEC (head),
1205 XCAR (BLOCAL_CDR_VEC (head))))
1205 XCAR (BLOCAL_CDR_VEC (head))))
12061206 Fsetcdr (assq_no_quit (XCAR (XCAR (it)),
12071207 XTHREADLOCAL (rv)->thread_alist),
12081208 newval);
1209
12091210 XSETCDR (XCAR (BLOCAL_CDR_VEC (head)), newval);
12101211 }
12111212 }
12121213 }
1213 BLOCAL_REALVALUE (XBUFFER_LOCAL_VALUE (valcontents)) = newval;
1214 BLOCAL_REALVALUE (XBUFFER_LOCAL_VALUE (valcontents)) = newval;
12141215 }
12151216 else if (THREADLOCALP (valcontents))
12161217 {
18121812 XBUFFER_LOCAL_VALUE (newval)->realvalue = allocate_misc ();
18131813 XMISCTYPE (XBUFFER_LOCAL_VALUE (newval)->realvalue)
18141814 = Lisp_Misc_ThreadLocal;
1815 XTHREADLOCAL (XBUFFER_LOCAL_VALUE (newval)->realvalue)->global = Qnil;
1815 XTHREADLOCAL (XBUFFER_LOCAL_VALUE (newval)->realvalue)->global
1816 = valcontents;
18161817 XTHREADLOCAL (XBUFFER_LOCAL_VALUE (newval)->realvalue)->thread_alist
18171818 = Fcons (Fcons (get_current_thread (), Qnil), Qnil);
18181819 BLOCAL_REALVALUE (XBUFFER_LOCAL_VALUE (newval)) = sym->value;
19801980 XBUFFER_LOCAL_VALUE (newval)->realvalue = allocate_misc ();
19811981 XMISCTYPE (XBUFFER_LOCAL_VALUE (newval)->realvalue)
19821982 = Lisp_Misc_ThreadLocal;
1983 XTHREADLOCAL (XBUFFER_LOCAL_VALUE (newval)->realvalue)->global = Qnil;
1983 XTHREADLOCAL (XBUFFER_LOCAL_VALUE (newval)->realvalue)->global
1984 = valcontents;
19841985 XTHREADLOCAL (XBUFFER_LOCAL_VALUE (newval)->realvalue)->thread_alist
19851986 = Fcons (Fcons (get_current_thread (), Qnil), Qnil);
19861987 BLOCAL_REALVALUE (XBUFFER_LOCAL_VALUE (newval)) = sym->value;