On Wed, Oct 19, 2016 at 10:01:52PM +0200, Hilmar Preuße wrote:
>...
> e_printf(form,i0,i1,i2,i3,i4,i5,i6,i7,i8,i9)
> char *form;
> {
>   int len,i;
>   unsigned char buf[4096];
>   sprintf(buf,form,i0,i1,i2,i3,i4,i5,i6,i7,i8,i9);
>   len=strlen(buf);
>   for(i=0;i<len;i++)
>     e_putchar(buf[i]);
> }
> 
> In line 255 (function output_pfa) it is called like this
> 
> e_printf("/StdHW [ %s ] |-\n",StdHW);
> 
> I /guess/ there is a thinks in string processing. Sorry, I don't have enough
> knowledge in C to help here. Does that ring anywhere a bell on your side? Is
> the problem reproducible e.g. in i386?

This is a 64bit problem, relevant gcc warning:
  wftodm.c:301:1: warning: type of 'i0' defaults to 'int' [-Wimplicit-int]

i0 is the variable where the pointer to the string is passed.

The minimal fix for the segfault is:

--- latex-cjk-japanese-wadalab-0.20050817.orig/wftodm.c
+++ latex-cjk-japanese-wadalab-0.20050817/wftodm.c
@@ -300,6 +300,7 @@ output_pfa(file)
 
 e_printf(form,i0,i1,i2,i3,i4,i5,i6,i7,i8,i9)
 char *form;
+long i0;
 {
   int len,i;
   unsigned char buf[4096];


After building with this fix I compared checksums of all files under 
debian/latex-cjk-japanese-wadalab for the successful amd64 build and
a build on i386, and they were identical.

> Hilmar

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

Reply via email to