summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/unexaix.c10
-rw-r--r--src/xsettings.c19
2 files changed, 22 insertions, 7 deletions
diff --git a/src/unexaix.c b/src/unexaix.c
index c2012f77cac..5685aee5480 100644
--- a/src/unexaix.c
+++ b/src/unexaix.c
@@ -245,15 +245,15 @@ make_hdr (int new, int a_out,
if (f_thdr == 0)
{
- ERROR1 ("unexec: couldn't find \"%s\" section", (int) _TEXT);
+ ERROR1 ("unexec: couldn't find \"%s\" section", _TEXT);
}
if (f_dhdr == 0)
{
- ERROR1 ("unexec: couldn't find \"%s\" section", (int) _DATA);
+ ERROR1 ("unexec: couldn't find \"%s\" section", _DATA);
}
if (f_bhdr == 0)
{
- ERROR1 ("unexec: couldn't find \"%s\" section", (int) _BSS);
+ ERROR1 ("unexec: couldn't find \"%s\" section", _BSS);
}
}
else
@@ -382,7 +382,7 @@ copy_text_and_data (int new)
write_segment (new, ptr, end);
lseek (new, data_scnptr, SEEK_SET);
- ptr = (char *) f_ohdr.data_start;
+ ptr = (char *) (ptrdiff_t) f_ohdr.data_start;
end = ptr + f_ohdr.dsize;
write_segment (new, ptr, end);
@@ -399,7 +399,7 @@ write_segment (int new, char *ptr, char *end)
for (i = 0; ptr < end;)
{
/* distance to next block. */
- nwrite = (((int) ptr + UnexBlockSz) & -UnexBlockSz) - (int) ptr;
+ nwrite = (((ptrdiff_t) ptr + UnexBlockSz) & -UnexBlockSz) - (ptrdiff_t) ptr;
/* But not beyond specified end. */
if (nwrite > end - ptr) nwrite = end - ptr;
ret = write (new, ptr, nwrite);
diff --git a/src/xsettings.c b/src/xsettings.c
index d7af68f1c5f..10afd7d15c8 100644
--- a/src/xsettings.c
+++ b/src/xsettings.c
@@ -667,8 +667,23 @@ apply_xft_settings (struct x_display_info *dpyinfo,
}
#endif
- if ((settings->seen & SEEN_DPI) != 0 && oldsettings.dpi != settings->dpi
- && settings->dpi > 0)
+ if ((settings->seen & SEEN_DPI) != 0
+ && settings->dpi > 0
+ /* The following conjunct avoids setting `changed' to true when
+ old and new dpi settings do not differ "substantially".
+ Otherwise, the dynamic-setting Elisp code may process all sorts
+ of unrelated settings that override users' font customizations,
+ among others. Compare:
+
+ http://lists.gnu.org/archive/html/emacs-devel/2016-05/msg00557.html
+ http://lists.gnu.org/archive/html/bug-gnu-emacs/2016-12/msg00820.html
+
+ As soon as the dynamic-settings code has been tested and
+ verified, this Emacs 25.2 workaround should be removed. */
+ && ((oldsettings.dpi >= settings->dpi
+ && (oldsettings.dpi - settings->dpi) > 2)
+ || ((settings->dpi > oldsettings.dpi)
+ && (settings->dpi - oldsettings.dpi) > 2)))
{
FcPatternDel (pat, FC_DPI);
FcPatternAddDouble (pat, FC_DPI, settings->dpi);