You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-editors/nedit/files/nedit-5.6-fix-crash-with-no...

119 lines
4.6 KiB

diff -urN a/source/highlightData.c b/source/highlightData.c
--- a/source/highlightData.c 2018-03-13 08:42:40.930188154 +0100
+++ b/source/highlightData.c 2018-03-13 08:44:59.651196431 +0100
@@ -1280,7 +1280,7 @@
XFontStruct *font;
if (styleNo<0)
- return GetDefaultFontStruct(window->fontList);
+ return GetDefaultFontStruct(TheDisplay, window->fontList);
fontNum = HighlightStyles[styleNo]->font;
if (fontNum == BOLD_FONT)
font = window->boldFontStruct;
@@ -1289,10 +1289,10 @@
else if (fontNum == BOLD_ITALIC_FONT)
font = window->boldItalicFontStruct;
else /* fontNum == PLAIN_FONT */
- font = GetDefaultFontStruct(window->fontList);
+ font = GetDefaultFontStruct(TheDisplay, window->fontList);
/* If font isn't loaded, silently substitute primary font */
- return font == NULL ? GetDefaultFontStruct(window->fontList) : font;
+ return font == NULL ? GetDefaultFontStruct(TheDisplay, window->fontList) : font;
}
int FontOfNamedStyleIsBold(char *styleName)
diff -urN a/source/text.c b/source/text.c
--- a/source/text.c 2018-03-13 08:42:40.931188154 +0100
+++ b/source/text.c 2018-03-13 08:46:37.785202286 +0100
@@ -778,9 +778,13 @@
textBuffer *buf;
Pixel white, black;
int textLeft;
- int charWidth = fs->max_bounds.width;
- int marginWidth = new->text.marginWidth;
- int lineNumCols = new->text.lineNumCols;
+ int charWidth;
+ int marginWidth;
+ int lineNumCols;
+
+ charWidth = fs->max_bounds.width;
+ marginWidth = new->text.marginWidth;
+ lineNumCols = new->text.lineNumCols;
/* Set the initial window size based on the rows and columns resources */
if (request->core.width == 0)
diff -urN a/source/window.c b/source/window.c
--- a/source/window.c 2018-03-13 08:42:40.937188155 +0100
+++ b/source/window.c 2018-03-13 08:48:07.727207652 +0100
@@ -1839,7 +1839,7 @@
/* Change the primary font in all the widgets */
if (primaryChanged) {
- font = GetDefaultFontStruct(window->fontList);
+ font = GetDefaultFontStruct(TheDisplay, window->fontList);
XtVaSetValues(window->textArea, textNfont, font, NULL);
for (i=0; i<window->nPanes; i++)
XtVaSetValues(window->textPanes[i], textNfont, font, NULL);
@@ -1861,7 +1861,7 @@
size appropriate for the new font, but only do so if there's only
_one_ document in the window, in order to avoid growing-window bug */
if (NDocuments(window) == 1) {
- fontWidth = GetDefaultFontStruct(window->fontList)->max_bounds.width;
+ fontWidth = GetDefaultFontStruct(TheDisplay, window->fontList)->max_bounds.width;
fontHeight = textD->ascent + textD->descent;
newWindowWidth = (oldTextWidth*fontWidth) / oldFontWidth + borderWidth;
newWindowHeight = (oldTextHeight*fontHeight) / oldFontHeight +
@@ -2244,7 +2244,7 @@
textNrows, rows, textNcolumns, cols,
textNlineNumCols, lineNumCols,
textNemulateTabs, emTabDist,
- textNfont, GetDefaultFontStruct(window->fontList),
+ textNfont, GetDefaultFontStruct(TheDisplay, window->fontList),
textNhScrollBar, hScrollBar, textNvScrollBar, vScrollBar,
textNreadOnly, IS_ANY_LOCKED(window->lockReasons),
textNwordDelimiters, delimiters,
--- a/util/misc.c 2018-03-13 08:50:54.892217626 +0100
+++ b/util/misc.c 2018-03-13 08:56:50.346238834 +0100
@@ -1018,7 +1018,7 @@
** a Motif font list. Since Motif stores this, it saves us from storing
** it or querying it from the X server.
*/
-XFontStruct *GetDefaultFontStruct(XmFontList font)
+XFontStruct *GetDefaultFontStruct(Display *d, XmFontList font)
{
XFontStruct *fs;
XmFontContext context;
@@ -1028,6 +1028,17 @@
XmFontListGetNextFont(context, &charset, &fs);
XmFontListFreeFontContext(context);
XtFree(charset);
+
+ /* FontList might be a render table with no only XFT fonts */
+ if (fs == NULL) {
+ fs = XLoadQueryFont(d, "fixed");
+ }
+
+ if (fs == NULL) {
+ fprintf(stderr, "Unabled to load any fallback fonts.\n");
+ exit(EXIT_FAILURE);
+ }
+
return fs;
}
diff -urN a/util/misc.h b/util/misc.h
--- a/util/misc.h 2018-03-13 08:50:54.890217626 +0100
+++ b/util/misc.h 2018-03-13 08:55:52.790235400 +0100
@@ -65,7 +65,7 @@
void AccelLockBugPatch(Widget topWidget, Widget topMenuContainer);
void UpdateAccelLockPatch(Widget topWidget, Widget newButton);
char *GetXmStringText(XmString fromString);
-XFontStruct *GetDefaultFontStruct(XmFontList font);
+XFontStruct *GetDefaultFontStruct(Display *d, XmFontList font);
XmString* StringTable(int count, ...);
void FreeStringTable(XmString *table);
void SimulateButtonPress(Widget widget);