aboutsummaryrefslogtreecommitdiffstats
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,
245 245
246 if (f_thdr == 0) 246 if (f_thdr == 0)
247 { 247 {
248 ERROR1 ("unexec: couldn't find \"%s\" section", (int) _TEXT); 248 ERROR1 ("unexec: couldn't find \"%s\" section", _TEXT);
249 } 249 }
250 if (f_dhdr == 0) 250 if (f_dhdr == 0)
251 { 251 {
252 ERROR1 ("unexec: couldn't find \"%s\" section", (int) _DATA); 252 ERROR1 ("unexec: couldn't find \"%s\" section", _DATA);
253 } 253 }
254 if (f_bhdr == 0) 254 if (f_bhdr == 0)
255 { 255 {
256 ERROR1 ("unexec: couldn't find \"%s\" section", (int) _BSS); 256 ERROR1 ("unexec: couldn't find \"%s\" section", _BSS);
257 } 257 }
258 } 258 }
259 else 259 else
@@ -382,7 +382,7 @@ copy_text_and_data (int new)
382 write_segment (new, ptr, end); 382 write_segment (new, ptr, end);
383 383
384 lseek (new, data_scnptr, SEEK_SET); 384 lseek (new, data_scnptr, SEEK_SET);
385 ptr = (char *) f_ohdr.data_start; 385 ptr = (char *) (ptrdiff_t) f_ohdr.data_start;
386 end = ptr + f_ohdr.dsize; 386 end = ptr + f_ohdr.dsize;
387 write_segment (new, ptr, end); 387 write_segment (new, ptr, end);
388 388
@@ -399,7 +399,7 @@ write_segment (int new, char *ptr, char *end)
399 for (i = 0; ptr < end;) 399 for (i = 0; ptr < end;)
400 { 400 {
401 /* distance to next block. */ 401 /* distance to next block. */
402 nwrite = (((int) ptr + UnexBlockSz) & -UnexBlockSz) - (int) ptr; 402 nwrite = (((ptrdiff_t) ptr + UnexBlockSz) & -UnexBlockSz) - (ptrdiff_t) ptr;
403 /* But not beyond specified end. */ 403 /* But not beyond specified end. */
404 if (nwrite > end - ptr) nwrite = end - ptr; 404 if (nwrite > end - ptr) nwrite = end - ptr;
405 ret = write (new, ptr, nwrite); 405 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,
667 } 667 }
668#endif 668#endif
669 669
670 if ((settings->seen & SEEN_DPI) != 0 && oldsettings.dpi != settings->dpi 670 if ((settings->seen & SEEN_DPI) != 0
671 && settings->dpi > 0) 671 && settings->dpi > 0
672 /* The following conjunct avoids setting `changed' to true when
673 old and new dpi settings do not differ "substantially".
674 Otherwise, the dynamic-setting Elisp code may process all sorts
675 of unrelated settings that override users' font customizations,
676 among others. Compare:
677
678 http://lists.gnu.org/archive/html/emacs-devel/2016-05/msg00557.html
679 http://lists.gnu.org/archive/html/bug-gnu-emacs/2016-12/msg00820.html
680
681 As soon as the dynamic-settings code has been tested and
682 verified, this Emacs 25.2 workaround should be removed. */
683 && ((oldsettings.dpi >= settings->dpi
684 && (oldsettings.dpi - settings->dpi) > 2)
685 || ((settings->dpi > oldsettings.dpi)
686 && (settings->dpi - oldsettings.dpi) > 2)))
672 { 687 {
673 FcPatternDel (pat, FC_DPI); 688 FcPatternDel (pat, FC_DPI);
674 FcPatternAddDouble (pat, FC_DPI, settings->dpi); 689 FcPatternAddDouble (pat, FC_DPI, settings->dpi);