Subject: Getting re-ordering from FriBidi

From: Marcus Lundblad <[email-masked]>
Date: Mon, 9 Jun 2003 17:52:13 +0200 (CEST)

I'm implementing the next step of combining characters. Separating out
combining characters that couldn't be combined into a list for drawing as
superimposed characters later on.
So I gather these and there positions (the index of the last non-combining
character).
Then I need to know how characters are re-organised by the BIDI step.
So I changed the call in FBidi.c to this:

pos_l_to_v = 
	  (unsigned short int *)safemalloc((str_len + 1) * 
					   sizeof(unsigned short int));
fribidi_log2vis(
		logical_unicode_str, str_len, &pbase_dir,
		visual_unicode_str, pos_l_to_v, NULL, NULL);

where pos_l_to_v is upposed to contain a mapping afterwards.
But when I fprintf the content, all I get is
135243992 135243992 135243992 135243992 135243992 135243992 135243992
135243992 135243992 135243992 135243992 135243992 135243992 135243992
135243992

(in this case)

(The first string to be run through FlocaleEncodeString is " +8888 x +8888
"
(for calculating geometry windows..)

And also FVWM segfaults later on:

(gdb) bt
#0  0x400f2727 in XFindOnExtensionList () from /usr/X11R6/lib/libX11.so.6
#1  0x400ebf4c in XFreeFont () from /usr/X11R6/lib/libX11.so.6
#2  0x400eb8d1 in XLoadQueryFont () from /usr/X11R6/lib/libX11.so.6
#3  0x40024b4f in load_font ()
   from /usr/X11R6/lib/X11/locale/common/xomGeneric.so.2
#4  0x40024c49 in _XomConvert ()
   from /usr/X11R6/lib/X11/locale/common/xomGeneric.so.2
#5  0x40023b2d in _XomGenericTextEscapement ()
   from /usr/X11R6/lib/X11/locale/common/xomGeneric.so.2
#6  0x40023b69 in _XmbGenericTextEscapement ()
   from /usr/X11R6/lib/X11/locale/common/xomGeneric.so.2
#7  0x4011d9e7 in XmbTextEscapement () from /usr/X11R6/lib/libX11.so.6
#8  0x080bbd0d in FlocaleTextWidth (flf=0x810ffd8, 
    str=0x3e07c725 <Address 0x3e07c725 out of bounds>, sl=1040697125)
    at Flocale.c:1735
#9  0x08066dbc in resize_geometry_window () at move_resize.c:621
#10 0x08088d5b in main (argc=3, argv=0xbffff224) at fvwm.c:2424
#11 0x42017589 in __libc_start_main () from /lib/i686/libc.so.6
(gdb) 

If I change "pos_l_to_v"  back to NULL in the call to FriBidi, it works as
before.

Am I foreseeing something here?

//Marcus

--
Visit the official FVWM web page at <URL:http://www.fvwm.org/>.
To unsubscribe from the list, send "unsubscribe fvwm-workers" in the
body of a message to [email-masked].
To report problems, send mail to [email-masked]

---

From: Marcus Lundblad <[email-masked]>
Date: Mon, 9 Jun 2003 18:02:14 +0200 (CEST)

Ooops.

The information on FriBidi's webpage is not up to date.
There it gives the lists as "gint16", but in the actual headers there is
a "FriBidiStrIndex" (which is defined as int).

//Marcus