--- texk/web2c/synctexdir/synctex-e-rec.ch0 (revision 23678) +++ texk/web2c/synctexdir/synctex-e-rec.ch0 (revision 23688) @@ -82,21 +82,11 @@ link(prev_p):=p; @z -@x etex.ch l.4126 - if is_char_node(p) then r:=get_avail - else case type(p) of +@x etex.ch l.4186 hlist_node,vlist_node: begin r:=get_node(box_node_size); - mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; {copy the last two words} - words:=5; list_ptr(r):=null; {this affects |mem[r+5]|} - end; @y - if is_char_node(p) then r:=get_avail - else case type(p) of hlist_node,vlist_node: begin r:=get_node(box_node_size); @; - mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; {copy the last two words} - words:=5; list_ptr(r):=null; {this affects |mem[r+5]|} - end; @z @x synctex-e-mem.ch0 l.100 --- texk/web2c/eptexdir/eptex.ech (revision 23678) +++ texk/web2c/eptexdir/eptex.ech 2011-12-12 09:46:29.391146557 +0000 @@ -283,6 +283,18 @@ disp_node: begin othercases goto next_p @z +@x e-pTeX: just_copy + hlist_node,vlist_node: begin r:=get_node(box_node_size); + mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; {copy the last two words} + words:=5; list_ptr(r):=null; {this affects |mem[r+5]|} +@y + dir_node,hlist_node,vlist_node: begin r:=get_node(box_node_size); + mem[r+7]:=mem[p+7]; mem[r+6]:=mem[p+6]; mem[r+5]:=mem[p+5]; + {copy the last three words} + add_glue_ref(space_ptr(r)); add_glue_ref(xspace_ptr(r)); + words:=5; list_ptr(r):=null; {this affects |mem[r+5]|} +@z + @x e-pTeX: ifcsname l.28620 buffer[m]:=info(p) mod @'400; incr(m); p:=link(p); @y --- texk/web2c/xetexdir/xetex.ch (revision 23186) +++ texk/web2c/xetexdir/xetex.ch (revision 24314) @@ -328,7 +328,7 @@ for i:=@'177 to @'377 do xchr[i]:=i; {Initialize enc\TeX\ data.} for i:=0 to 255 do mubyte_read[i]:=null; for i:=0 to 255 do mubyte_write[i]:=0; -for i:=0 to 128 do mubyte_cswrite[i]:=null; +for i:=0 to 127 do mubyte_cswrite[i]:=null; mubyte_keep := 0; mubyte_start := false; write_noexpanding := false; cs_converting := false; special_printing := false; message_printing := false; --- texk/web2c/enctex.ch (revision 23186) +++ texk/web2c/enctex.ch (revision 24314) @@ -42,14 +42,14 @@ for i:=@'177 to @'377 do xchr[i]:=i; {Initialize enc\TeX\ data.} for i:=0 to 255 do mubyte_read[i]:=null; for i:=0 to 255 do mubyte_write[i]:=0; -for i:=0 to 128 do mubyte_cswrite[i]:=null; +for i:=0 to 127 do mubyte_cswrite[i]:=null; mubyte_keep := 0; mubyte_start := false; write_noexpanding := false; cs_converting := false; special_printing := false; message_printing := false; no_convert := false; active_noconvert := false; @z -@x [5.59] l.1508FIXME -- enc\TeX\ modifications of |print|. +@x [5.59] l.1508 FIXME -- enc\TeX\ modifications of |print|. else begin if selector>pseudo then begin print_char(s); return; {internal strings are not expanded} end; --- texk/web2c/ptexdir/ptex-base.ch 2011/08/18 10:21:01 +++ texk/web2c/ptexdir/ptex-base.ch 2011/08/18 13:52:11 @@ -46,6 +46,7 @@ % (31/12/2010) AK Bug fix and accent Kanji by Hironori Kitagawa. % (19/01/2011) PB Let \lastkern etc act through disp node. % (15/04/2011) PB pTeX p3.2 Add \ifdbox and \ifddir +% (2011-08-18) PB Bug fix by Hironori Kitagawa. % @x [1.2] l.200 - pTeX: @d banner==TeX_banner @@ -5848,6 +5849,9 @@ var @!jc:KANJI_code; {temporary register for KANJI} @!sp,@!mp,@!ep:pointer; begin@/ +if f=null_font then + begin get_jfm_pos:=kchar_type(null_font)(0); return; + end; jc:=toDVI(kcode); sp:=1; { start position } ep:=font_num_ext[f]-1; { end position } @@ -6677,11 +6681,13 @@ goto main_loop_j+3; @# main_loop_j+1: space_factor:=1000; - fast_get_avail(main_p); font(main_p):=main_f; character(main_p):=cur_l; - link(tail):=main_p; tail:=main_p; last_jchr:=tail; - fast_get_avail(main_p); info(main_p):=KANJI(cur_chr); - link(tail):=main_p; tail:=main_p; - cx:=cur_chr; @; + if main_f<>null_font then + begin fast_get_avail(main_p); font(main_p):=main_f; character(main_p):=cur_l; + link(tail):=main_p; tail:=main_p; last_jchr:=tail; + fast_get_avail(main_p); info(main_p):=KANJI(cur_chr); + link(tail):=main_p; tail:=main_p; + cx:=cur_chr; @; + end; ins_kp:=false; again_2: get_next; @@ -6717,7 +6723,10 @@ @# main_loop_j+3: if ins_kp=true then @; - @; + if main_f<>null_font then + begin @; + end + else inhibit_glue_flag:=false; if ins_kp=false then begin { Kanji -> Kanji } goto main_loop_j+1; end else if ins_kp=true then begin { Kanji -> Ascii } --- texk/dvipsk/dospecial.c 2010-05-10 17:47:35.000000000 +0200 +++ texk/dvipsk/dospecial.c 2011-10-19 14:29:46.323146222 +0200 @@ -112,7 +112,7 @@ static void fgetboundingbox(char *f, float *llx_p, float *lly_p, float *urx_p, float *ury_p) { FILE *fp; - char buf[BUFSIZ]; + char buf[BUFSIZ+1]; fp = search(figpath, f, READ); if (fp == 0) --- texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psread.c 2010-04-04 15:55:46.000000000 +0200 +++ texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psread.c 2011-10-20 10:14:41.851646143 +0200 @@ -385,7 +385,7 @@ return; wrapper->top = io; } -static int ioescapestopped(IO *wrapper, struct psstack *stack, int sp) { +static int ioescapestopped(IO *wrapper, struct psstack *stack, int sp, const size_t bsize) { _IO *io = wrapper->top, *iop; int wasstopped; @@ -396,7 +396,7 @@ static int ioescapestopped(IO *wrapper, free(io); if ( wasstopped ) { wrapper->top = iop; - if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + if ( sp<(int)bsize ) { stack[sp].type = ps_bool; stack[sp++].u.tf = true; } @@ -1609,7 +1609,7 @@ static void _InterpretPS(IO *wrapper, En } break; case pt_stop: - sp = ioescapestopped(wrapper,stack,sp); + sp = ioescapestopped(wrapper,stack,sp,sizeof(stack)/sizeof(stack[0])); break; case pt_load: if ( sp>=1 && stack[sp-1].type==ps_lit ) {