My mistake, #1 is also XEmacs code.

The crash in libx11 is clearly caused by misuse of the API. Here's the
function XFontsOfFontSet:

  int
  XFontsOfFontSet(font_set, font_struct_list, font_name_list)
      XFontSet        font_set;
      XFontStruct  ***font_struct_list;
      char         ***font_name_list;
  {
      *font_name_list   = font_set->core.font_info.font_name_list;
      *font_struct_list = font_set->core.font_info.font_struct_list;
      return font_set->core.font_info.num_font;
  }

The font_set being passed in is NULL. The backtrace leaves out the
function "extract_font_extents" which is actually making the call to
XFontsOfFontSet from lwlib/xlwmenu.c:2928. Here's the function with
preprocessor directives applied:

  static void
  extract_font_extents (XlwMenuWidget mw)
  {
    XFontStruct **fontstruct_list;
    char **fontname_list;
    XFontStruct *font;
    int fontcount = XFontsOfFontSet(mw->menu.font_set, &fontstruct_list,
                                    &fontname_list);
    mw->menu.font_ascent  = 0;
    mw->menu.font_descent = 0;
    while (--fontcount >= 0) {
        font = fontstruct_list[fontcount];
        if (font->ascent > (int) mw->menu.font_ascent)
            mw->menu.font_ascent = font->ascent;
        if (font->descent > (int) mw->menu.font_descent)
            mw->menu.font_descent = font->descent;
    }
  }

Anyways, "mw" is being passed in to XlwMenuInitialize as the parameter
"new". Its menu.font_set is NULL and XlwMenuInitialize makes no effect
to set it to something, so clearly it's expecting it to be initialized
elsewhere.

Not knowing the design of the software, that's as far as I can go.
Please fix it, or at least forward it upstream. For completeness, I've
included some more debugging info showing the contents of "mw" and
"mw->menu":

(gdb) p *(XlwMenuWidget)new
$1 = {core = {self = 0x8598870, widget_class = 0x822f8a0, parent =
0x85671f8,
    xrm_name = 423, being_destroyed = 0 '\0', destroy_callbacks = 0x0,
    constraints = 0x0, x = 0, y = 0, width = 0, height = 0, border_width
= 1,
    managed = 0 '\0', sensitive = 1 '\001', ancestor_sensitive = 1 '\001',
    event_table = 0x0, tm = {translations = 0x8598848, proc_table = 0x0,
      current_state = 0x0, lastEventTime = 0}, accelerators = 0x0,
    border_pixel = 0, border_pixmap = 2, popup_list = 0x0, num_popups = 0,
    name = 0x832d49e "menubar", screen = 0x8417048, colormap = 32,
window = 0,
    depth = 24, background_pixel = 13421772, background_pixmap = 2,
    visible = 1 '\001', mapped_when_managed = 1 '\001'}, menu = {
    font = 0x85989a0, font_set = 0x0, font_ascent = 0, font_descent = 0,
    foreground = 5066061, button_foreground = 255,
    highlight_foreground = 16711680, title_foreground = 11546720, margin
= 2,
    horizontal_margin = 2, vertical_margin = 1, column_spacing = 4,
    shadow_thickness = 2, indicator_size = 0, top_shadow_color = 16119285,
    bottom_shadow_color = 8026746, select_color = 2263842,
    top_shadow_pixmap = 0, bottom_shadow_pixmap = 0, cursor_shape =
50331659,
    open = 0x0, select = 0x0, contents = 0x8579228, horizontal = 1,
    use_backing_store = 0 '\0', bounce_down = 1 '\001',
    lookup_labels = 0 '\0', old_depth = 0, old_stack = 0x0,
    old_stack_length = 0, new_depth = 0, new_stack = 0x0,
    new_stack_length = 0, windows = 0x0, windows_length = 0,
    foreground_gc = 0x859a1f8, button_gc = 0x859ab00,
    background_gc = 0x859a8e8, inactive_gc = 0x85990d0,
    inactive_button_gc = 0x859c2b0, shadow_top_gc = 0x859c328,
    shadow_bottom_gc = 0x859c3a0, select_gc = 0x8599038,
    highlight_gc = 0x859a9d0, title_gc = 0x859aa68, cursor = 50331659,
    popped_up = 0 '\0', gray_pixmap = 50331660, pointer_grabbed = 0 '\0',
    next_release_must_exit = 0 '\0', menu_post_time = 0,
menu_bounce_time = 0,
    last_selected_val = 0x0}}
(gdb) p ((XlwMenuWidget)new)->menu
$2 = {font = 0x85989a0, font_set = 0x0, font_ascent = 0, font_descent = 0,
  foreground = 5066061, button_foreground = 255,
  highlight_foreground = 16711680, title_foreground = 11546720, margin = 2,
  horizontal_margin = 2, vertical_margin = 1, column_spacing = 4,
  shadow_thickness = 2, indicator_size = 0, top_shadow_color = 16119285,
  bottom_shadow_color = 8026746, select_color = 2263842,
  top_shadow_pixmap = 0, bottom_shadow_pixmap = 0, cursor_shape = 50331659,
  open = 0x0, select = 0x0, contents = 0x8579228, horizontal = 1,
  use_backing_store = 0 '\0', bounce_down = 1 '\001', lookup_labels = 0
'\0',
  old_depth = 0, old_stack = 0x0, old_stack_length = 0, new_depth = 0,
  new_stack = 0x0, new_stack_length = 0, windows = 0x0, windows_length = 0,
  foreground_gc = 0x859a1f8, button_gc = 0x859ab00, background_gc =
0x859a8e8,
  inactive_gc = 0x85990d0, inactive_button_gc = 0x859c2b0,
  shadow_top_gc = 0x859c328, shadow_bottom_gc = 0x859c3a0,
  select_gc = 0x8599038, highlight_gc = 0x859a9d0, title_gc = 0x859aa68,
  cursor = 50331659, popped_up = 0 '\0', gray_pixmap = 50331660,
  pointer_grabbed = 0 '\0', next_release_must_exit = 0 '\0',
  menu_post_time = 0, menu_bounce_time = 0, last_selected_val = 0x0}
(gdb) p ((XlwMenuWidget)new)->menu.font_set
$3 = (XFontSet) 0x0

Thanks,
Nick Lewycky



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to