1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
diff -uprN libmatchbox-1.7~orig/libmb/mbexp.c libmatchbox-1.7/libmb/mbexp.c
--- libmatchbox-1.7~orig/libmb/mbexp.c 2006-02-23 00:33:19.000000000 -0600
+++ libmatchbox-1.7/libmb/mbexp.c 2006-02-23 00:40:06.000000000 -0600
@@ -406,6 +406,10 @@ mb_font_new(Display *dpy,
#endif
font = malloc(sizeof(MBFont));
+
+ if (font == NULL)
+ return NULL;
+
memset(font, 0, sizeof(MBFont));
if (family != NULL)
@@ -425,9 +429,12 @@ mb_font_new(Display *dpy,
font->pgo_fontmap = pango_xft_get_font_map (font->dpy, DefaultScreen(dpy));
font->fontdes = pango_font_description_new ();
- /* -- Needed ?
- pango_context_set_language (w->pgo, pango_language_from_string ("ar_AE"));
- */
+ /* If Pango is mis-setup the above will fail */
+ if (font->pgo_context == NULL || font->pgo_fontmap == NULL || font->fontdes == NULL)
+ {
+ free(font);
+ return NULL;
+ }
#elif defined (USE_XFT)
@@ -581,8 +588,11 @@ MBFont*
mb_font_new_from_string(Display *dpy, char *spec)
{
MBFont *font = mb_font_new(dpy, NULL);
- mb_font_set_from_string(font, spec);
- return font;
+
+ if (font)
+ return mb_font_set_from_string(font, spec);
+
+ return NULL;
}
MBFont*
@@ -1091,7 +1101,13 @@ mb_font_render_simple (MBFont *
if (!len) { free(str); return 0; }
if ((opts & MB_FONT_RENDER_OPTS_CLIP_TRAIL) && len > 3)
+ {
+ /* Avoid having a space before the elipsis */
+ while (len-1 >= 0 && str[len-1] == ' ')
+ len--;
+
want_dots = True;
+ }
}
else
{
diff -uprN libmatchbox-1.7~orig/libmb/mbmenu.c libmatchbox-1.7/libmb/mbmenu.c
--- libmatchbox-1.7~orig/libmb/mbmenu.c 2006-02-23 00:33:19.000000000 -0600
+++ libmatchbox-1.7/libmb/mbmenu.c 2006-02-23 00:42:23.000000000 -0600
@@ -19,6 +19,10 @@
#define _GNU_SOURCE
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include "mbmenu.h"
#define MBMAX(x,y) ((x>y)?(x):(y))
@@ -664,7 +668,7 @@ mb_menu_check_scroll_button(MBMenu *mb,M
return WANT_SCROLL_DOWN;
}
- /*
+#if 0
for(tmpi = m->too_big_start_item;
tmpi != NULL;
tmpi = tmpi->next_item)
@@ -679,7 +683,7 @@ mb_menu_check_scroll_button(MBMenu *mb,M
MENUDBG("%s() retruning want scroll up\n", __func__);
return WANT_SCROLL_UP;
}
- */
+#endif /* #if 0 */
if (m->too_big_end_item
&& y_pos > (m->too_big_end_item->y+m->too_big_end_item->h))
diff -uprN libmatchbox-1.7~orig/libmb/mbpixbuf.c libmatchbox-1.7/libmb/mbpixbuf.c
--- libmatchbox-1.7~orig/libmb/mbpixbuf.c 2006-02-23 00:33:19.000000000 -0600
+++ libmatchbox-1.7/libmb/mbpixbuf.c 2006-02-23 00:43:02.000000000 -0600
@@ -907,6 +907,7 @@ mb_pixbuf_new_extended(Display *dpy,
fprintf(stderr, "mbpixbuf: unable to use XShm. DISPLAY remote?\n");
pb->have_shm = False;
}
+ else XShmDetach(pb->dpy, &shminfo);
shmdt(shminfo.shmaddr);
shmctl(shminfo.shmid, IPC_RMID, 0);
|